回答
沒有等同於With ... End With在C#。
這裏的a comparison chart爲你說明了Visual Basic和C#之間的區別。
該比較圖表很棒。我正在從VB過渡到C#,這將是非常有用的。 – 2011-05-11 13:36:05
C#中沒有等價的結構。這是一個Visual Basic 6.0/VB.NET功能。
這不是等價的,但這種語法對你有用嗎?
Animal a = new Animal()
{
SpeciesName = "Lion",
IsHairy = true,
NumberOfLegs = 4
};
「With」不會創建實例,所以這是錯誤的。 – 2017-04-28 21:02:58
我認爲下面VB相當於:
With SomeObjectExpression()
.SomeProperty = 5
.SomeOtherProperty = "Hello"
End With
將是這是C#:
{
Var q=SomeOtherExpression();
q.SomeProperty = 5;
q.SomeOtherProperty = "Hello";
}
唯一的區別是,在VB中,標識符沒有名稱「q」,但僅僅是一個缺省標識符,當遇到一個句點時沒有使用y之前的其他標識符。
外卷有什麼?對不起,但這並沒有任何接近的效果。它只是一堆給制定者的電話。 – tomfanning 2010-11-11 22:03:32
外括號設置變量q的範圍。假設對象表達式是一個類而不是一個結構體,我認爲上面的VB.Net和C#代碼幾乎完全相同。前面的語句是如何使用with語句的一個例子,後面的語句是C#翻譯。 C#示例使用了幾個setter,因爲這是任意選擇的VB.net示例。重要的一點是,「with」等同於定義一個臨時變量,然後在任何時候使用一個沒有前面標識符的句點來使用它。 – supercat 2010-11-13 17:55:35
沒有等價物,但我認爲討論語法可能很有趣!
我很喜歡;
NameSpace.MyObject.
{
active = true;
bgcol = Color.Red;
}
其他建議?
我無法想象添加這種語言功能將是困難的,基本上只是一個預處理。
編輯:
我生病的等待這個功能,所以這裏是和擴展,實現了類似的行爲。
/// <summary>
/// C# implementation of Visual Basics With statement
/// </summary>
public static void With<T>(this T _object, Action<T> _action)
{
_action(_object);
}
用法;
LongInstanceOfPersonVariableName.With(x => {
x.AgeIntVar = 21;
x.NameStrVar = "John";
x.NameStrVar += " Smith";
//etc..
});
編輯:有趣的是,似乎有人打我一記重拳,再次,這個「解決方案」。呵呵..
- 1. C#等效於Visual Basic關鍵字:'With'...'End With'?
- 2. End with without statement
- 3. 在django中傳遞WITH和END WITH變量中的多個值
- 4. ng2-smart-table with back-end from back-end(Spring)
- 5. 我可以更改designer.vb中的代碼以使用With/End With?
- 6. VB With/End With關鍵字有什麼不好?
- 7. 使用「With .. End With」將範圍分配給陣列
- 8. PostgreSQL等同於TOP n WITH TIES:LIMIT「with ties」?
- 9. Object with Combobox with With語句
- 10. VBA Excel在With x End With循環中檢測始終隱藏的行和列?
- 11. SQL WITH WITH
- 12. 使用屬性End With來刪除元素
- 13. C#Parallel.Foreach with XML
- 14. 」with「macro in C
- 15. C#Foreach with MySQL
- 16. C#WebClient with https
- 17. Hardy with Objective-C
- 18. C with postgresql
- 19. Mouse Click with C++
- 20. SublimeLinter with C++ 11
- 21. opencv&C++ with objective-c
- 22. End of End/Response.End在剃刀中的等價物?
- 23. 什麼是--with-ruby-include的RubyGems等價物?
- 24. PostgreSQL WITH RECURSIVE性能
- 25. 什麼是AngularJs中KnockoutJs的WITH的等效html屬性
- 26. Stuck with columns with bootstrap
- 27. MySql Group with with Pivot
- 28. UIPageControl with UIView with button
- 29. Visual C#Express with DryadLINQ?
- 30. Ext JS with C#Backend
「with」實際上在VB之前就已經存在了。它存在於Pascal中,用於處理記錄類型。不知道帕斯卡是否從別處借鑑了這個想法。 – JeffK 2010-10-29 15:32:57