为什么with()构造不包含在C#中,当它在VB.NET中真的很酷时?

Shi*_*iva 10 c# vb.net with-statement

我是C#开发人员.我非常喜欢花括号,因为我来自C,C++和Java背景.但是,我也喜欢.NET系列的其他编程语言,比如VB.NET.如果你在.NET中编程了一段时间,那么在C#和VB.NET之间来回切换并不是什么大不了的事.这是我工作的公司非常常见的方法.作为C#的人,我非常喜欢withVB.NET编译器提供的XML文字和关键字.我希望微软也将这些功能包含在C#中.

我只是很好奇,其他开发者对它有什么看法!

Jon*_*eet 16

我个人在构造之后使用它时不喜欢WITH - 如果你需要在初始化之后用一个对象做几件事,通常这个行为应该封装在类型本身中.如果你真的想做像WITH这样的事情,那么只需要声明一个简短的变量并选择引入一个新的范围.

然而,它能够与几个属性紧凑初始化对象有用的-这也正是为什么C#3,您可以这样写:

MyObject x = new MyObject { Name="Fred", Age=20, Salary=15000 };
Run Code Online (Sandbox Code Playgroud)

这有一些限制(C#4中的可选和命名参数将有助于克服)但它比没有导致潜在的混乱/模糊更好.

(在XML文字方面,我再次与C#团队合作 - XML是一种非常具体的技术,可以用于语言.如果他们能够提出一种通用的形式,恰好创建XML但可以用来创建其他树这也很好 - 就像查询表达式没有直接绑定到IEnumerable或IQueryable一样.)


Jim*_*son 0

如果“With”或类似的功能最终与其他迄今为止流行的 VB 专用功能一起添加到 C# 中,我不会感到惊讶。最近在 PDC 和其他地方的 C# 4.0 预览演示中,有很多关于从 C# 4.0 和 VB 10 开始增加“对语言平等的关注”的讨论。