這是帕斯卡樣品我想在C#實現:有沒有一種方式在C#中訪問舊的,帕斯卡「與」關鍵字方式的對象屬性?
With myBook do
Begin
Title := 'Some Book';
Author := 'Victor John Saliba';
ISBN := '0-12-345678-9';
Price := 25.5;
End;
這是帕斯卡樣品我想在C#實現:有沒有一種方式在C#中訪問舊的,帕斯卡「與」關鍵字方式的對象屬性?
With myBook do
Begin
Title := 'Some Book';
Author := 'Victor John Saliba';
ISBN := '0-12-345678-9';
Price := 25.5;
End;
在這裏你可以找到一個解釋here.
摘錄:
- 小或不存在可讀性好處。我們認爲可讀性好處很小或不存在。我不會說,with語句使得代碼不易讀,但有些人可能會這樣做。
- 語言複雜度增加。添加with語句會使語言更加複雜。例如,VB必須添加新的語言語法來解決局部變量(Text)和「with」目標(.Text)上屬性之間的潛在歧義。解決這個問題的其他方法也會引入語言複雜性。另一種方法是推送作用域並使該屬性隱藏本地變量,但是如果不添加某種轉義語法,則無法引用本地。
- C++遺產。 C++從來沒有一個with語句,缺乏這樣的語句通常不被C++開發者認爲是一個問題。另外,我們並沒有感覺到其他變化 - 人們正在編寫的代碼類型的變化,平臺中的變化,語言中的其他變化等 - - 更加必要的陳述。
只有施工時。
var foo = new Foo
{
Title = "lol",
Author = "Som Gai",
ISBWhatever = "111"
}
VB.NET有'with'關鍵字,但c#沒有。
不,沒有。之前已經討論過,大多數人都不需要它。
它會傷害可讀性,造成不明確的情況,使得調試更加困難,而且它的便利性在很大程度上被IntelliSense抵消。
爲了解決你的最後的評論,你當然可以寫的:
myBook.Title = "Some Book";
...
請注意,這僅適用於C#3.0及更高版本。 – 2009-09-08 13:12:33
謝謝,但我不想做出新的對象。 – ni5ni6 2009-09-08 13:13:39
沒有等價物。初始化新對象時只能做這種事情。 – Will 2009-09-08 13:15:19