Equivalence of “With…End With” in C#?
本问题已经有最佳答案,请猛点这里访问。
我知道c有
Visual Basic 6.0中是否存在与
它不是等价的,但是这种语法对您有用吗?
1 2 3 4 5 6 |
C没有相应的语言结构。
没有等价物,但我认为讨论语法可能很有趣!
我很喜欢;
1 2 3 4 5 | NameSpace.MyObject. { active = true; bgcol = Color.Red; } |
还有什么建议吗?
我无法想象添加这个语言特性会很困难,基本上只是一个预处理的。
编辑:
我厌倦了等待这个特性,所以这里是实现类似行为的扩展。
1 2 3 4 5 6 7 | /// <summary> /// C# implementation of Visual Basics With statement /// </summary> public static void With<T>(this T _object, Action<T> _action) { _action(_object); } |
使用情况;
1 2 3 4 5 6 | LongInstanceOfPersonVariableName.With(x => { x.AgeIntVar = 21; x.NameStrVar ="John"; x.NameStrVar +=" Smith"; //etc.. }); |
编辑:有趣的是,似乎有人用这个"解决方案"打败了我。哦,好吧。
我认为相当于下面的vb:
1 2 3 4 | With SomeObjectExpression() .SomeProperty = 5 .SomeOtherProperty ="Hello" End With |
这是C:
1 2 3 4 5 | { Var q=SomeOtherExpression(); q.SomeProperty = 5; q.SomeOtherProperty ="Hello"; } |
唯一的区别是,在VB中,标识符没有名称"q",只是在遇到一个句点时使用的默认标识符,在此之前没有任何其他标识符。
没有等价于…以C结尾。
下面是一个对比图,说明了VisualBasic和C_之间的区别。
C中没有等效结构。这是一个VisualBasic6.0/vb.net功能。