在C#中的"With...End With"的等效方法是什么?
在C#中没有与"With...End With"相对应的等价物,但我认为讨论一种语法可能很有趣!我非常喜欢这种写法;
NameSpace.MyObject. { active = true; bgcol = Color.Red; }
还有其他建议吗?
我无法想象添加这种语言特性会有多难,基本上只是一个预处理过程。
编辑:
我等不及这个功能了,所以这里有一个扩展,可以实现类似的行为。
////// C# implementation of Visual Basics With statement /// public static void With(this T _object, Action _action) { _action(_object); }
用法:
LongInstanceOfPersonVariableName.With(x => { x.AgeIntVar = 21; x.NameStrVar = "John"; x.NameStrVar += " Smith"; //etc.. });
编辑:有趣的是,似乎有人比我更早地提出了这个“解决方案”。哎呀。。
虽然不完全一样,但我喜欢你的想法。如果格式良好,它可以使代码更易读。
所以,你最终还是重复了变量名。你可以使用相同的方法:x = LongInstanceOfPersonVariableName; x.AgeIntVar = 21; //etc.
这让我恶心了一点。
在C#中不存在与此等效的语言结构。但是,如果您有一个返回"this"的方法类,那么您可以将这些方法链接在一起。现在,通过C# 9中的记录,可以使用with关键字(但概念并不完全相同)。详细信息请参阅devblogs.microsoft.com/dotnet/c-9-0-on-the-record。