可能重复:
C# equivalent for Visual Basic keyword: 'With' ... 'End With'?
With Alpha.Beta.Gama.Eta.Zeta
a = .ZetaPropertyA
b = .ZetaPropertyB
c = .ZetaPropertyC
End With
a = Alpha.Beta.Gama.Eta.Zeta.ZetaPropertyA
b = Alpha.Beta.Gama.Eta.Zeta.ZetaPropertyB
c = Alpha.Beta.Gama.Eta.Zeta.ZetaPropertyC
答案 0 :(得分:12)
不,不存在。
虽然你可以稍微缩短一点:
var z = Alpha.Beta.Gama.Eta.Zeta;
z.ZetaPropertyA = a;
z.ZetaPropertyB = b;
z.ZetaPropertyC = c;
对于你的其他情况:
var z = Alpha.Beta.Gama.Eta.Zeta;
a = z.ZetaPropertyA;
b = z.ZetaPropertyB;
c = z.ZetaPropertyC;
这应该是显而易见的;)
答案 1 :(得分:3)
对于新实例,您可以使用对象初始值设定项:
Alpa.Beta.Gama.Eta = new Zeta
{
ZetaPropertyA = a,
ZetaPropertyB = b,
ZetaPropertyC = c
}
答案 2 :(得分:2)
不,没有什么比C#中的with
构造更好。
答案 3 :(得分:1)
Nope。解决方法是(短)本地变量名称而不是with
。每行添加几个字符,但最终仍然使用完全限定的引用。
答案 4 :(得分:1)
抱歉,C#没有。对象初始化程序@Jakub建议可能提供替代方法,或者:
如果您自己设计Zeta
,则可以使用 fluent interface 设计模式。这将允许你这样做:
Alpha.Beta.Gama.Eta.Zeta
.SetPropertyA(A)
.SetPropertyB(B)
.SetPropertyC(C);
这接近你想要的东西,而牺牲了其他地方的大量工作。请记住,流畅的界面并不总是最佳的设计选择。