在C#中是否有VB.NET“With”语句?

时间:2012-02-28 13:27:20

标签: c# vb.net syntax

  

可能重复:   Equivalence of “With…End With” in C#?

所以我不知道此问题是否曾被提出,我不是VB.NET的忠实粉丝。但是我在C#中缺少的一种语法是With语法。

在VB.NET中你可以写:

Dim sb As New StringBuilder
With sb
    .Append("foo")
    .Append("bar")
    .Append("zap")
End With

C#中是否存在我错过的语法同样的事情?

5 个答案:

答案 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语句时。