更新:2007 年 11 月
null 关键字是表示不引用任何对象的 null 引用的文字值。null 是引用类型变量的默认值。普通值类型不能为 null。但是,C# 2.0 引入了可以为 null 值的类型。请参见可空类型(C# 编程指南)。
下面的示例演示 null 关键字的一些行为:
C# | 复制代码 |
---|---|
class Program { class MyClass { public void MyMethod() { } } static void Main(string[] args) { // Set a breakpoint here to see that mc = null. // However, the compiler considers it "unassigned." // and generates a compiler error if you try to // use the variable. MyClass mc; // Now the variable can be used, but... mc = null; // ... a method call on a null object raises // a run-time NullReferenceException. // Uncomment the following line to see for yourself. // mc.MyMethod(); // Now mc has a value. mc = new MyClass(); // You can call its method. mc.MyMethod(); // Set mc to null again. The object it referenced // is no longer accsessible and can now be garbage-collected. mc = null; // A null string is not the same as an empty string. string s = null; string t = String.Empty; // Logically the same as "" // Equals applied to any null object returns false. bool b = (t.Equals(s)); Console.WriteLine(b); // Equality operator also returns false when one // operand is null. Console.WriteLine("Empty string {0} null string", s == t ? "equals": "does not equal"); // Returns true. Console.WriteLine("null == null is {0}", null == null); // A value type cannot be null // int i = null; // Compiler error! // Use a nullable value type instead: int? i = null; // Keep the console window open in debug mode. System.Console.WriteLine("Press any key to exit."); System.Console.ReadKey(); } } |
C# 语言规范
有关更多信息,请参见 C# 语言规范中的以下各章节:
2.4.4.6 null 文本
请参见
修订记录
日期 | 修订 | 原因 |
---|---|---|
2008 年 7 月 | 添加了代码示例。 |
内容 Bug 修复 |