回答
没有等同于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. 使用“With .. End With”将范围分配给阵列
- 7. VB 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. Javascript VisualBasic的WITH等效?
- 14. C with postgresql
- 15. c#foreach with Action.BeginInvoke
- 16. ”with“macro in C
- 17. Hardy with Objective-C
- 18. sscanf_s with double%c
- 19. SublimeLinter with C++ 11
- 20. C#Foreach with MySQL
- 21. Mouse Click with C++
- 22. C#WebClient with https
- 23. Bubblesort with C
- 24. C#Parallel.Foreach with XML
- 25. MM:hh:mm time with C++
- 26. BigTable with C#Library
- 27. WePay embedCheckout with c#
- 28. JNI with Builder C++
- 29. 在Java 8中,Regex-replace-with-function-evaluation等价于什么?
- 30. 在Java 7中,Regex-replace-with-function-evaluation等价于什么?
“with”实际上在VB之前就已经存在了。它存在于Pascal中,用于处理记录类型。不知道帕斯卡是否从别处借鉴了这个想法。 – JeffK 2010-10-29 15:32:57