所以我不知道此问题是否曾被提出,我不是VB.NET的忠实粉丝。但是我在C#中缺少的一种语法是With
语法。
在VB.NET中你可以写:
Dim sb As New StringBuilder
With sb
.Append("foo")
.Append("bar")
.Append("zap")
End With
C#中是否存在我错过的语法同样的事情?
答案 0 :(得分:11)
不,没有。
这是故意遗漏的C#,因为它没有增加太多的便利,并且因为它可以很容易地被用来编写令人困惑的代码。
来自Visual C#的团队项目经理Scott Wiltamuth的博客文章,关于with关键字:http://msdn.microsoft.com/en-us/vstudio/aa336816.aspx
对于StringBuilder
的特殊情况,您可以对呼叫进行链接:
StringBuilder sb = new StringBuilder()
.Append("foo")
.Append("bar")
.Append("zap");
答案 1 :(得分:4)
与VB With
语句没有直接的类比。
但请注意,StringBuilder.Append
会返回StringBuilder
个实例,因此以下代码与原始代码相同:
sb.Append("foo").Append("bar").Append("zap");
甚至
sb.Append("foo")
.Append("bar")
.Append("zap");
但是,这对所有对象/方法都不可能。
答案 2 :(得分:2)
不,没有等效的语法。
With
仅限VB / VB.NET。
答案 3 :(得分:2)
New Type With
有一个等价物:
var obj = new Type {
PropName = Value,
PropName = Value
};
,但不适用于常见的With
。
答案 4 :(得分:0)
没有 - 这只是Visual Basic。
它被排除在C#之外的一个主要原因是它可能导致代码混乱,例如在使用嵌套的With
语句时。