2009-09-08 42 views

回答

6

在這裏你可以找到一個解釋here.

摘錄:

  • 小或不存在可讀性好處。我們認爲可讀性好處很小或不存在。我不會說,with語句使得代碼不易讀,但有些人可能會這樣做。
  • 語言複雜度增加。添加with語句會使語言更加複雜。例如,VB必須添加新的語言語法來解決局部變量(Text)和「with」目標(.Text)上屬性之間的潛在歧義。解決這個問題的其他方法也會引入語言複雜性。另一種方法是推送作用域並使該屬性隱藏本地變量,但是如果不添加某種轉義語法,則無法引用本地。
  • C++遺產。 C++從來沒有一個with語句,缺乏這樣的語句通常不被C++開發者認爲是一個問題。另外,我們並沒有感覺到其他變化 - 人們正在編寫的代碼類型的變化,平臺中的變化,語言中的其他變化等 - - 更加必要的陳述。
8

只有施工時。

var foo = new Foo 
{ 
    Title = "lol", 
    Author = "Som Gai", 
    ISBWhatever = "111" 
} 

VB.NET有'with'關鍵字,但c#沒有。

+1

請注意,這僅適用於C#3.0及更高版本。 – 2009-09-08 13:12:33

+1

謝謝,但我不想做出新的對象。 – ni5ni6 2009-09-08 13:13:39

+1

沒有等價物。初始化新對象時只能做這種事情。 – Will 2009-09-08 13:15:19

2

不,沒有。之前已經討論過,大多數人都不需要它。

它會傷害可讀性,造成不明確的情況,使得調試更加困難,而且它的便利性在很大程度上被IntelliSense抵消。

爲了解決你的最後的評論,你當然可以寫的:

myBook.Title = "Some Book"; 
... 
+0

或者C#會像VB.NET一樣,所有那些假裝自己對VB.NET來說太聰明的人都會感到沮喪。 – t3rse 2009-09-08 13:17:02

+0

但是在構建時能夠設置道具有什麼巨大差異,但是之後無法設置道具......? – ni5ni6 2009-09-08 13:20:11

+0

ni5ni6,最後的評論是關於只讀或私人領域,它與__With__無關。 – 2009-09-08 13:22:30

相關問題