【问题标题】:What is the equivalent syntax in C#, if any? [duplicate]C# 中的等效语法是什么,如果有的话? [复制]
【发布时间】:2010-11-29 15:30:50
【问题描述】:

C# 是否有任何等效于 VB6 的功能

With 
End With

【问题讨论】:

标签: c# vb6 syntax equivalent


【解决方案1】:

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

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

还有收藏:

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

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

【讨论】:

  • 匿名构造与With块有什么关系? (提问者显然指的是块。)
  • @Strilanc:因为 With 块通常用于在新构造的对象上设置多个属性...而对象初始化器相当于 C# 中的 that 位。
  • 哦,我明白了。我混淆了匿名和初始化语法。
  • With 可用于保存一个临时实例 -- With New cMyClass -- 然后在它超出范围之前实际调用方法(不仅仅是初始化道具)。
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

    没有。

    接近的是对象和列表初始化器

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

    【讨论】:

      【解决方案4】:

      这绝不是等价的,但是,如果它是您想要减少的打字,您可以这样做。

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

      【讨论】:

        【解决方案5】:

        没有与 Visual Basic 的 With 关键字等效的 C#。

        【讨论】:

          【解决方案6】:

          【讨论】:

            【解决方案7】:

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

            出于这个原因,我怀疑在 C# 中直接等效于 With/End With 是一个好主意。如果您发现自己在给定范围内一遍又一遍地键入对象的名称,这很好地表明所讨论的代码将在该对象的类上创建一个很好的方法。

            【讨论】:

              【解决方案8】:

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

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

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2010-10-25
                • 1970-01-01
                • 2011-02-24
                • 2011-08-04
                • 1970-01-01
                • 1970-01-01
                • 2017-05-19
                • 2012-07-13
                相关资源
                最近更新 更多