采取以下措施:
obj myVar;
和
obj myVar = null;
这两者之间有实际区别吗?它们都被抓住了(myVar == null)
吗?
你的答案在你的问题中。 obj != null
意思是“对象存在”。
然而,这几乎始终是正确的。==
and运算符的自定义覆盖可以更改此功能,因此绝对可以确保在所有!=
情况下都可以使用!Object.ReferenceEquals(obj,null)
来确保对象确实存在。
您得到的错误是System.NullReferenceException
, 并且将始终通过此检查避免。
简短但甜蜜的答案是:支票(object != null)
总是阻止object not set to an instance
如果您正在从数据库中读取对象,如下面的代码片段所示:
private object GetItem(DataSet dataSet1, string tableName, int row, int col) {
object obj = null;
try {
obj = dataSet1.Tables[tableName].Rows[row][col];
} catch (Exception err) {
Console.WriteLine(err.Message);
}
return obj;
}
返回的值可以是null
(如果捕获到异常)或者DBNull.Value
如果dataSet1.Tables[tableName].Rows[row][col]
没有在数据库中设置。
但是,如果您忽略了初始化对象 obj
,如下例所示:
private object Test2(DataSet dataSet1) {
object obj;
try {
obj = dataSet1.Tables[0].Rows[0][0];
} catch (Exception err) {
Console.WriteLine(err.Message);
}
return obj;
}
该代码将无法在 Visual Studio 下编译。
那是一样的。如果一个对象没有被设置为一个对象的实例,它就没有对任何东西的引用,换句话说,就是null
。