2009-09-08 54 views

回答

6

在这里你可以找到一个解释here.

摘录:

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

只有施工时。

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

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

+1

请注意,这仅适用于C#3.0及更高版本。 – 2009-09-08 13:12:33

+1

谢谢,但我不想做出新的对象。 – ni5ni6 2009-09-08 13:13:39

+1

没有等价物。初始化新对象时只能做这种事情。 – Will 2009-09-08 13:15:19

2

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

它会伤害可读性,造成不明确的情况,使得调试更加困难,而且它的便利性在很大程度上被IntelliSense抵消。

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

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

或者C#会像VB.NET一样,所有那些假装自己对VB.NET来说太聪明的人都会感到沮丧。 – t3rse 2009-09-08 13:17:02

+0

但是在构建时能够设置道具有什么巨大差异,但是之后无法设置道具......? – ni5ni6 2009-09-08 13:20:11

+0

ni5ni6,最后的评论是关于只读或私人领域,它与__With__无关。 – 2009-09-08 13:22:30

相关问题