采取以下措施:
obj myVar;
和
obj myVar = null;
这两者之间是否存在实际差异 - 它们是否都被(myVar == null)
捕获?
答案 0 :(得分:6)
你的答案在你的问题中。 obj != null
表示“对象存在”。
然而,这只是真正的几乎所有时间。 ==
和!=
运算符的自定义覆盖可以更改此功能,因此要确保您可以使用!Object.ReferenceEquals(obj,null)
确保对象确实存在,在所有强>个案。
您获得的错误是System.NullReferenceException
,此检查将始终避免此错误。
答案 1 :(得分:3)
简短而又甜蜜的答案是:支票(object != null)
始终会阻止object not set to an instance
答案 2 :(得分:1)
如果您正在从数据库中读取对象,例如下面的代码片段:
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下无法编译。
答案 3 :(得分:0)
这是一回事。如果对象未设置为对象的实例,则它将没有对任何内容的引用,换句话说,将为null
。