在C#中的"With...End With"的等效方法是什么?

13 浏览
0 Comments

在C#中的"With...End With"的等效方法是什么?

我知道C#有关键字using,但是using会自动释放对象。

在Visual Basic 6.0中是否有等价的With...End With

0
0 Comments

在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.

这让我恶心了一点。

0
0 Comments

在C#中不存在与此等效的语言结构。但是,如果您有一个返回"this"的方法类,那么您可以将这些方法链接在一起。现在,通过C# 9中的记录,可以使用with关键字(但概念并不完全相同)。详细信息请参阅devblogs.microsoft.com/dotnet/c-9-0-on-the-record

0
0 Comments

在C#中,没有与"With...End With"等效的语法。这可能是因为"With"关键字不能创建实例,所以不能使用这种语法。然而,可以使用以下语法来实现相似的效果:

Animal a = new Animal()
{
    SpeciesName = "Lion",
    IsHairy = true,
    NumberOfLegs = 4
};

这种语法允许在创建实例时设置对象的属性。尽管这种语法不能调用返回函数,因为它需要已经创建的实例,但在某些情况下,它可以简化代码,并解决一些问题。

0