2009-10-05 55 views
0
public class Test 
{ 
    //Car c = null; // Is this better and is it good to set it to null. 

    public void A() 
    { 
     Car c = new Car(); 
    } 

    public void B() 
    { 
     Car c = new Car(); 
    } 

    public void C() 
    { 
     Car c = new Car(); 
    } 
} 

1)我可以只在頂部申報對象0全局和每個方法使用它,而不必每次(創建一個新的難道這就是我其實在做什麼?)在.net中初始化對象?

2)它是一個好主意最初設置對象爲空?

+3

請重新審視你的代碼,並張貼一些編譯。 – 2009-10-05 15:24:32

+0

我很快更新了我的代碼,不知道爲什麼這是downvoted。主要問題不是關於null,而主要是如果重新聲明對象會增加我的可執行文件的大小。 – Xaisoft 2009-10-05 15:32:36

+0

你應該回來,慢慢來。你現在有三個局部變量,其中沒有一個引用'c'類成員對象。 – 2009-10-05 15:40:15

回答

3

FxCop指出您應該避免不必要的初始化代碼,因爲它會生成不必要的IL,這會影響性能。 (雖然我認爲性能影響非常小)。 有時,我也明確地初始化變量,只是爲了讓我的代碼更清晰。

要回答你的第一個問題:它是你想/想要做什麼都事......

+0

謝謝,這是我正在尋找的答案類型。重複初始化同一個對象似乎是多餘的。再次感謝。 – Xaisoft 2009-10-05 15:33:36

+0

是啊,我的C和C++日子讓我初始化引用null,儘管我知道這是不必要的。 – 2009-10-05 15:43:32

0

這是一個重複的問題,並已在SO上多次提出過。答案是,「這是一個風格問題」。有些人喜歡錶示理解編譯器將初始化爲空的事實。其他人更喜歡一種不需要理解編譯器將初始化爲空的樣式。

+0

這是我的問題的一部分。 – Xaisoft 2009-10-05 15:29:00

+0

對象的重新聲明會增加我的可執行文件的大小,或者會影響性能,如果我多次執行它。 – Xaisoft 2009-10-05 15:39:47

0

1)我可以只在頂部申報對象0全局和每個方法使用它,而不必每次(創建一個新的難道這就是我其實在做什麼?)

除了對象的無效名稱(比較0O),是的,您可以。 Redeclaring創建另一個變量與本地作用域,它不會修改該類的私有成員。

2)它是最初設定的目標爲null一個好主意?

這是沒有必要的,因爲這是在創建類的對象時自動完成的。

+0

無效的名字來自我輸入的速度。 – Xaisoft 2009-10-05 15:27:52

+0

重新聲明對象是否會增加可執行文件的大小? – Xaisoft 2009-10-05 15:31:38

+0

當然,它會產生一個新的(本地)變量,當然需要保存。 – 2009-10-05 15:58:10