这个错误连续出现两次了,所以今天决定仔细研究一番,弄清楚是咋一回事。首选,自己在本地搭建了一个测试环境,测试发现一点问题都没有,不知道是不是自己的逻辑不对,还是测试方式不对。
问题是这样的就是判断条件不满足,但是我调试的时候,直接拖进去,在条件里面定义了变量,变量却报“未将对象引用设置到对象的实例错误”
先看我的测试代码
一定义类
[Serializable]
public partial class LGSubsRequestData
{
/// <summary>
/// 运单号
/// </summary>
public string trackingNumber { get; set; }
/// <summary>
/// 物流订单号
/// </summary>
public string trackingOrderNo { get; set; }
}
二定义方法
public static string TestOut(string y, out string x, out string z, out LGSubsRequestData objLGSubsRequestData, out LGSubsRequestData objLGSubsRequestData2, out LGSubsRequestData objLGSubsRequestData3)
{
x = string.Empty; z = string.Empty;
x = "张总";
z = "李大师";
objLGSubsRequestData = null;
objLGSubsRequestData2 = null;
objLGSubsRequestData3 = null;
objLGSubsRequestData = new LGSubsRequestData() { trackingNumber="sss",trackingOrderNo="777"};
return y + "---test---" + x + "------" + z;
}
三定义测试方法
try
{
string x = "a";
if (x == "b")
{
string da;
string ba;
LGSubsRequestData objLGSubsRequestData;
LGSubsRequestData objLGSubsRequestData2;
LGSubsRequestData objLGSubsRequestData3;
var xx = TestOut("你好", out da, out ba, out objLGSubsRequestData, out objLGSubsRequestData2, out objLGSubsRequestData3);
Console.WriteLine(xx);
}
}
catch (Exception ex)
{
throw ex;
}
四本地测试结果
没有出现上面的错误
在项目中测试,一直报上面的错误,于是设想 1把判断条件去掉,测试发现没有错误了 2满足判断条件,再进去,测试发现也没有错误。 3把变量定义判断条件之外,再拖进去,测试也没有错误。
带着这个疑问去问了 GPT, 给出的回答,好像能解释这个现象
五 结论
是定义在条件里面的变量,如果不满足条件一定不会初始化,不能被调用。在某些环境里,强制进入条件里面,变量也可能不会初始化,使用的时候会报错!
所以要想不报错,请把变量定义判断条件外面,并给初始化值!