C#中是否有VB.NET“ With”语句? [重复]

问题描述 投票:5回答:5

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

所以我不知道是否曾经问过这个问题,我也不是VB.NET的忠实拥护者。但是With语法是我在C#中缺少的一种语法。

在VB.NET中,您可以编写:

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

我想念的C#语法是否有相同的作用?

c# vb.net syntax
5个回答
13
投票

不,没有。

[C#故意将其排除在外,因为它并没有增加太多便利,并且因为它很容易用于编写混乱的代码。

来自Visual C#的组程序经理,Scott Wiltamuth的博客文章,关于with关键字: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");

4
投票

与VB With语句没有直接类似。

但是请注意,StringBuilder.Append返回StringBuilder实例,因此以下代码与您的原始代码等效:

sb.Append("foo").Append("bar").Append("zap");

甚至

sb.Append("foo")
  .Append("bar")
  .Append("zap");

但是,并非所有对象/方法都可行。


2
投票

不,没有等效的语法。

[With仅是VB / VB.NET。


2
投票

[C0有一个等效项:

New Type With

,但不是普通的var obj = new Type { PropName = Value, PropName = Value };


0
投票

没有-这是仅Visual Basic。

[C#之所以被排除在外的主要原因之一是,它可能导致混淆的代码,例如,当使用嵌套的With语句时。

© www.soinside.com 2019 - 2024. All rights reserved.