在C#中是否有办法以旧的Pascal“with”关键字方式访问对象属性?

时间:2009-09-08 13:08:50

标签: c# keyword code-snippets

这是我想在C#中实现的Pascal示例:

With myBook do
 Begin
  Title  := 'Some Book';
  Author := 'Victor John Saliba';
  ISBN   := '0-12-345678-9';
  Price  := 25.5;
 End;

3 个答案:

答案 0 :(得分:8)

仅在构建时。

var foo = new Foo
{
  Title = "lol",
  Author = "Som Gai",
  ISBWhatever = "111"
}

VB.NET有'with'关键字,但c#没有。

答案 1 :(得分:6)

您可以在此处找到解释here.

摘录:

  
      
  • 小的或不存在的可读性好处。我们认为可读性好处很小或根本不存在。我不会说with语句使代码的可读性降低,但有些人可能会这样做。
  •   
  • 语言复杂性增加。添加with语句会使语言更复杂。例如,VB必须添加新的语言语法来解决局部变量(Text)和“with”目标(.Text)上的属性之间的潜在歧义。解决此问题的其他方法也会引入语言复杂性。另一种方法是推送作用域并使属性隐藏局部变量,但是如果没有添加一些转义语法就无法引用本地。
  •   
  • C ++遗产。 C ++从未有过一个with语句,而且缺乏这样的语句通常被C ++开发人员认为不是问题。此外,我们没有感觉到其他变化 - 人们正在编写的代码类型的变化,平台的变化,语言的其他变化等等 - 使用语句更加必要。
  •   

答案 2 :(得分:2)

不,没有。之前已经讨论过,大多数人都不想要它。

它会损害可读性,造成模糊不清的情况,使调试更加困难,并且它的便利性在很大程度上被IntelliSense抵消。

要解决您的上一条评论,您当然可以写下:

myBook.Title = "Some Book";
...