2

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

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

3 回答 3

8

仅在构建时。

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

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

于 2009-09-08T13:10:23.133 回答
6

你可以在这里找到解释

摘抄:

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

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

它损害了可读性,产生了模棱两可的情况,使调试更加困难,而且它的便利性在很大程度上被 IntelliSense 抵消了。

为了解决您的最后一条评论,您当然可以写:

myBook.Title = "Some Book";
...
于 2009-09-08T13:15:50.023 回答