是否有一个“VB.NET”;加上;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#之

可能重复:

所以我不知道以前是否有人问过这个问题,我也不太喜欢这个问题。但是我在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语句的用途。链接似乎已断开链接似乎(实际上)已断开-它重定向到非特定页面。