这是我想在 C# 中实现的 Pascal 示例:
With myBook do
Begin
Title := 'Some Book';
Author := 'Victor John Saliba';
ISBN := '0-12-345678-9';
Price := 25.5;
End;
这是我想在 C# 中实现的 Pascal 示例:
With myBook do
Begin
Title := 'Some Book';
Author := 'Victor John Saliba';
ISBN := '0-12-345678-9';
Price := 25.5;
End;
仅在构建时。
var foo = new Foo
{
Title = "lol",
Author = "Som Gai",
ISBWhatever = "111"
}
VB.NET 有 'with' 关键字,但 c# 没有。
你可以在这里找到解释。
摘抄:
- 小的或不存在的可读性好处。我们认为可读性的好处很小或根本不存在。我不会说 with 语句会降低代码的可读性,但有些人可能会。
- 语言复杂度增加。添加 with 语句会使语言更加复杂。例如,VB 必须添加新的语言语法来解决局部变量 (Text) 和“with”目标 (.Text) 上的属性之间的潜在歧义。解决这个问题的其他方法也引入了语言复杂性。另一种方法是推送一个作用域并使属性隐藏局部变量,但是如果不添加一些转义语法就无法引用局部变量。
- C++ 遗产。C++ 从来没有 with 语句,而且 C++ 开发人员通常不认为缺少这样的语句是一个问题。此外,我们并不认为其他变化——人们正在编写的代码类型的变化、平台的变化、语言的其他变化等——使语句变得更加必要。
不,那里没有。之前已经讨论过,大多数人不想要它。
它损害了可读性,产生了模棱两可的情况,使调试更加困难,而且它的便利性在很大程度上被 IntelliSense 抵消了。
为了解决您的最后一条评论,您当然可以写:
myBook.Title = "Some Book";
...