是否有一个“VB.NET”;加上;C#中的语句?
可能重复: 所以我不知道以前是否有人问过这个问题,我也不太喜欢这个问题。但是我在C#中缺少的一种语法是是否有一个“VB.NET”;加上;C#中的语句?,c#,vb.net,syntax,C#,Vb.net,Syntax,可能重复: 所以我不知道以前是否有人问过这个问题,我也不太喜欢这个问题。但是我在C#中缺少的一种语法是With语法 在VB.NET中,您可以编写: Dim sb As New StringBuilder With sb .Append("foo") .Append("bar") .Append("zap") End With C语言中是否有一种我没有注意到的语法,可以做同样的事情?不,没有等价的语法 With仅适用于VB/VB.NET。不,没有 这被有意地排除在C#之
With
语法
在VB.NET中,您可以编写:
Dim sb As New StringBuilder
With sb
.Append("foo")
.Append("bar")
.Append("zap")
End With
C语言中是否有一种我没有注意到的语法,可以做同样的事情?不,没有等价的语法
With
仅适用于VB/VB.NET。不,没有
这被有意地排除在C#之外,因为它没有增加太多的便利性,而且很容易被用来编写混乱的代码
Visual C#的组程序经理Scott Wiltamuth的博客文章,关于with关键字:
对于StringBuilder
的特殊情况,可以链接调用:
StringBuilder sb = new StringBuilder()
.Append("foo")
.Append("bar")
.Append("zap");
没有-这只是Visual Basic
它被排除在C之外的一个主要原因是它会导致代码混乱,例如,当使用嵌套的
和语句时。没有与VB和语句直接类似的语句
但是,请注意,StringBuilder.Append
返回StringBuilder
实例,因此以下代码与原始代码等效:
sb.Append("foo").Append("bar").Append("zap");
甚至
sb.Append("foo")
.Append("bar")
.Append("zap");
但是,并非所有对象/方法都可以这样做。新类型的与有一个等价物:
var obj = new Type {
PropName = Value,
PropName = Value
};
,但对于常见的With
,出于好奇,您能否提供一个关于使用With/End With的令人困惑的VB.Net代码的示例?您可能还注意到C#具有对象初始值设定项语法,但它只能用于设置公共实例变量,不进行函数调用。编写函数调用,而不是sb.Append(“foo”)
??我在VB.NET中编程了12年,从未理解with语句的好处。还有一件事你每次都要查(又是什么?)@TimSchmelter:我想知道同样的事情。在过去的4年里,我可能一直在VB.NET中编写代码,除了新的…With构造外,从未发现With语句的用途。链接似乎已断开链接似乎(实际上)已断开-它重定向到非特定页面。