C#:未实例化对象的默认值是什么?

时间:2016-10-31 11:49:44

标签: c# class oop

我对c#中的默认值有一个简单的问题。

未实例化时对象的默认值是什么?

以下是一个例子:

public class Example
{
  public Example() { Console.WriteLine("Content!"); }
}

public class MainClass
{
  // obj = ???
  Example obj;
}

1 个答案:

答案 0 :(得分:1)

规则很简单

  • 本地变量包含根本没有初始化,因此包含垃圾。
  

局部变量不会自动初始化,因此没有   默认值。

https://msdn.microsoft.com/en-us/library/aa691170(v=vs.71).aspx

  • 字段由默认值(零)
  • 初始化
  

字段的初始值,无论是静态字段还是静态字段   实例字段,是默认值

https://msdn.microsoft.com/en-us/library/aa645756(v=vs.71).aspx

例如

 public class Example {
   bool m_Bool;       // default value == false
   int m_Int;         // default value == 0
   double m_Double;   // default value == 0.0
   string m_Text      // default value == null;
   Example m_Example; // default value == null;

   public void Test() {
     bool boolValue;     // contains trash, must be initialized before using
     int intValue;       // contains trash, must be initialized before using
     double doubleValue; // contains trash, must be initialized before using 
     string textValue;   // reference to trash, must be initialized before using   
     Example example;    // reference to trash, must be initialized before using   
     ...
   } 
 }