對於VS2005中的C#,如果簡單地聲明它們並且不指定任何值,那麼以下類型的變量的值是多少?即。他們的默認值是什麼?VS2005中的c#:以下類型在C#中默認使用哪些?
int
bool
string
char
enum
對於VS2005中的C#,如果簡單地聲明它們並且不指定任何值,那麼以下類型的變量的值是多少?即。他們的默認值是什麼?VS2005中的c#:以下類型在C#中默認使用哪些?
int
bool
string
char
enum
如果他們在本地使用(即他們不是類或結構的成員),他們不會具有默認值。直到他們被賦予一個值(除非你明確地「新建它們」),你將無法使用它們。
如果他們是在本地使用不,他們會默認爲0
,false
,null
和'\0'
。
編輯:您已將enum
添加到列表中。 enums
默認值爲0,因爲它們默認在幕後使用int
。因此,無論枚舉被聲明爲0,enum
(通常是第一枚枚舉,但是可覆蓋)將是默認值。如果你沒有有 0值列舉出於任何原因,那麼你將有一個作爲默認值的enum
無效的值。
請說明。我正在討論在類或方法的範圍內聲明變量。 - 克雷格約翰斯頓
我告訴一個小小的謊言,指出編譯器如何工作。如果你聲明瞭一個局部變量,那麼編譯器將不會編譯,如果你試圖在沒有明確地給該變量賦值的情況下使用它;其中包括null
作爲參考類型。
例如:
public void Foo()
{
int bar;
int barPlus5 = bar + 5; // Compiler Error!
}
技術上,bar
仍然有一個默認值0,但因爲C#編譯器不會允許您使用在本地範圍的變量的默認值,局部範圍變量有效地沒有默認值。 <Ben Kenobi>
所以,我從某個角度告訴你是真的。 </Ben Kenobi>
。
規則有例外:out參數獲得通過,因爲編譯器強制out參數在返回之前必須由方法分配,並且您可以執行int bar = new int();
以獲取默認值,因爲這在技術上是分配。現在
,如果聲明一個變量作爲類的成員還是結構如如下:
public class Foo
{
public int Bar {get;set;}
public Foo() { }
}
然後你實例化美孚的地方,酒吧將有0.1
默認值例如:
var foo = new Foo();
Console.WriteLine(foo.Bar); // output: 0
以下是您提到的每種類型的默認值。
int = 0
bool = false
string = null
char = '\0'
enum = 0 //behind the scenes enum is int
有鑑於此前進,在運行時,如果你想捕捉任何類型的默認值,那麼你可以使用C#default
聲明,簡單地稱呼其爲以下。
//This will print 0 on screen.
Console.WriteLine(default(int));
通常,這在泛型中用於標識泛型類型參數的默認值,其中類型僅在運行時已知。
我喜歡添加'default',這在我的答案中完全忽略了。如果可以,我會再給你一個+1 .. – Randolpho 2010-06-30 14:02:10
MSDN文章 - Value Types。
所有的值類型都隱式聲明一個 公共參數實例 構造函數稱爲「默認構造函數 」。默認構造函數 返回一個零初始化實例 ,該值被稱爲 值類型的默認值。
在C#局部變量(值或 引用類型)的情況下,它們必須是 在使用之前進行初始化。
MSDN文章 - Types
被定義爲一類, 委託,陣列或接口A型爲 引用類型。在運行時,當你 聲明引用 類型的變量,該變量值爲 空,直到明確使用 new運算符創建對象的 實例,或爲其分配一個對象 有由 使用新的其他地方創建。
在VS找30秒?也許一分鐘。而'enum'不是一種類型。 – AakashM 2010-06-30 14:02:19
@aakashM:所選擇的答案提供了比在30秒內可以學到的更多的東西。 – CJ7 2010-06-30 21:56:09