是否存在VB.NET“;用“;C#中的语句
本文关键字:语句 NET 存在 是否 VB | 更新日期: 2023-09-27 18:26:05
可能重复:C#中"With…End With"的等价性?
所以我不知道这个问题以前有没有人问过,我也不是VB.NET的铁杆粉丝。但我在C#中缺少的一个语法是With
语法。
在VB.NET中,您可以编写:
Dim sb As New StringBuilder
With sb
.Append("foo")
.Append("bar")
.Append("zap")
End With
C#中有没有我遗漏的语法做同样的事情?
不,没有。
这是故意在C#中省略的,因为它没有增加太多的便利性,而且它可以很容易地用来编写令人困惑的代码。
Visual C#集团项目经理Scott Wiltamuth关于的博客文章,关键字为:https://web.archive.org/web/20111217005440/http://msdn.microsoft.com/en-us/vstudio/aa336816.aspx
对于StringBuilder
的特殊情况,您可以连锁调用:
StringBuilder sb = new StringBuilder()
.Append("foo")
.Append("bar")
.Append("zap");
没有与VB With
语句直接类似的语句。
但是,请注意,StringBuilder.Append
返回StringBuilder
实例,因此以下代码等效于原始代码:
sb.Append("foo").Append("bar").Append("zap");
甚至
sb.Append("foo")
.Append("bar")
.Append("zap");
但这并不是所有对象/方法都可以实现的。
不,没有等效的语法。
With
仅为VB/VB.NET。
New Type With
:有一个等价物
var obj = new Type {
PropName = Value,
PropName = Value
};
,但不适用于公共With
。
没有-这只是Visual Basic。
它被排除在C#之外的主要原因之一是它可能导致代码混乱,例如在使用嵌套的With
语句时。