C#是否具有VB6的任何等价物
With
End With
答案 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 ...