null声明的差异

时间:2013-04-26 13:23:39

标签: c#

采取以下措施:

obj myVar;

obj myVar = null;

这两者之间是否存在实际差异 - 它们是否都被(myVar == null)捕获?

4 个答案:

答案 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下无法编译

screenshot

答案 3 :(得分:0)

这是一回事。如果对象未设置为对象的实例,则它将没有对任何内容的引用,换句话说,将为null