C#中的等效语法是什么,如果有的话?

时间:2010-11-29 15:30:51

标签: c# vb6 syntax equivalent

C#是否具有VB6的任何等价物

With 
End With

8 个答案:

答案 0 :(得分:19)

没有什么相当等价,但C#3获得了在构造上设置属性的能力:

var person = new Person { Name = "Jon", Age = 34 };

收藏品:

var people = new List<Person>
{
    new Person { Name = "Jon" },
    new Person { Name = "Holly"}
};

它绝对不能替代With所有用途,但值得了解其中一些

答案 1 :(得分:14)

C#没有任何等效语法。最接近的是对象初始值设定项,但它们不相同:

var obj = new SomeThing {
    Height = 100,
    Text = "Hello, World",
    ForeColor = System.Drawing.Color.Green
}

答案 2 :(得分:6)

没有

接近的是对象和列表初始值设定项

Person p = new Person()
{
    FirstName = "John",
    LastName = "Doe",
    Address = new Address()
    {
        Street = "1234 St.",
        City = "Seattle"
    }
};

答案 3 :(得分:4)

这绝不是一个等价物,但是,如果是你试图减少的打字,你可以这样做。

{
  var o = myReallyReallyReallyReallyLongObjectName;
  o.Property1 = 1;
  o.Property2 = 2;
  o.Property3 = 3;
}

答案 4 :(得分:2)

没有C#等同于Visual Basic的With关键字。

答案 5 :(得分:2)

c#中没有等价物 - &gt;请在评论http://blogs.msdn.com/b/csharpfaq/archive/2004/03/11/why-doesn-t-c-have-vb-net-s-with-operator.aspx

中阅读更多内容

答案 6 :(得分:1)

一个近等效的是调用一个类成员的方法。您不必在类成员中重复命名拥有对象 - 它隐含在函数是成员的事实中,为给定实例调用。

由于这个原因,我怀疑在C#中直接相当于With / End With是一个好主意。如果您发现自己在给定范围内反复输入对象的名称,则可以很好地指示相关代码将在该对象的类上创建一个好的方法。

答案 7 :(得分:1)

没有直接的等价物。您可以像其他人解释的那样设置构造属性,也可以将表达式分配给具有短名称的变量。以下内容应在语义上等效:

With <expression>
    .something ...
    .somethingElse ...
End With

var w = <expression>;
w.something ...
w.somethingElse ...