C#中与VB的With语句相当的是什么?

12 浏览
0 Comments

C#中与VB的With语句相当的是什么?

可能重复:

C#中的"With…End With"等效吗?

VB有一个我真的很喜欢的特性...With语句。C#有类似的吗?我知道你可以使用using来不必输入命名空间,但它只限于这个。在VB中,你可以这样做:

With Stuff.Elements.Foo
    .Name = "Bob Dylan"
    .Age = 68
    .Location = "On Tour"
    .IsCool = True
End With

在C#中,相同的代码将是:

Stuff.Elements.Foo.Name = "Bob Dylan";
Stuff.Elements.Foo.Age = 68;
Stuff.Elements.Foo.Location = "On Tour";
Stuff.Elements.Foo.IsCool = true;

0
0 Comments

在VB中,可以使用With语句来批量操作一个对象的属性和方法。然而,在C#中并没有直接的等价物。因此,问题是如何在C#中实现与VB中With语句相同的功能。

在这个问题中,有人提供了一个在C# 3.0中实现类似功能的方法。他建议使用构造函数来初始化属性。具体的代码如下:

Stuff.Elements.Foo foo = new Stuff.Elements.Foo() {Name = "Bob Dylan", Age = 68, Location = "On Tour", IsCool = true}

然而,有人对这个解决方法提出了疑问。他指出,在这个解决方法中,'Stuff.Elements.Foo'被当作了一个类型来使用,而不是一个嵌套变量的引用。因此,他认为这个解决方法并不完全正确。

C#中没有直接等价于VB中With语句的功能。然而,可以使用构造函数来实现类似的效果。但是需要注意,在C#中使用构造函数来初始化属性时,需要确保正确引用嵌套变量。

0
0 Comments

在C#中,没有与VB中的With语句完全等效的功能。With语句允许在一系列语句中引用相同的对象,而无需重复引用对象的名称。这样可以简化代码并提高可读性。

虽然C#中没有直接的With语句,但可以使用对象初始化器来实现类似的效果。对象初始化器只能在构造函数调用中使用,而不能在其他地方使用。

下面是一个示例,展示了如何在C#中模拟With语句的功能:

var it = Stuff.Elements.Foo;
it.Name = "Bob Dylan";
it.Age = 68;
...

在这个示例中,我们首先创建了一个名为"it"的变量,并将其设置为"Stuff.Elements.Foo"对象。然后,我们可以直接使用"it"变量来引用该对象的属性,并对其进行赋值操作。

尽管这种方式可以实现类似With语句的效果,但仍然需要重复使用"it"变量。与With语句不同,我们不能在一系列语句中直接引用对象的属性,而是需要通过"it"变量来引用。

尽管C#没有与VB中的With语句完全等效的功能,但可以使用对象初始化器来实现类似的效果。通过创建一个临时变量并使用对象初始化器,我们可以在一系列语句中引用相同的对象,从而简化代码并提高可读性。

0
0 Comments

C#中没有与VB中的With语句相对应的功能。在C#中,您必须分配一个变量来实现相同的效果。下面是一些示例代码:

var bar = Stuff.Elements.Foo;
bar.Name = "Bob Dylan";
bar.Age = 68;
bar.Location = "On Tour";
bar.IsCool = True;

或者在C# 3.0及以上版本中可以使用对象初始化器:

var bar = new FooType
{
    Name = "Bob Dylan",
    Age = 68,
    Location = "On Tour",
    IsCool = True
};
Stuff.Elements.Foo = bar;

在VB代码中,'Stuff.Elements.Foo'被当作一个类型来处理,但在C#中,它被视为一个变量。如果您想在C#中模拟With语句的功能,可以使用扩展方法和Lambda表达式。这个技巧在我的博客文章中有详细介绍。

某些情况下在C#中使用类似`Object.Child.Grandchild.GreatGrandchild.Property1 = 1;`这样的语法可能违反了迪米特法则,但这是另一个讨论的话题。

另外,有人指出上述代码中的`Stuff.Elements.Foo`是一个变量,而不是一个类型。如果它是一个类型,那么您需要使用`new`关键字。

在C#中没有直接等价于VB中With语句的功能,但可以通过其他方式实现类似的效果。

0