是否存在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#中有没有我遗漏的语法做同样的事情?

是否存在VB.NET“;用“;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语句时。