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

标签 c# vb.net with-statement

我是 C# 开发人员。我真的很喜欢花括号,因为我来自 C、C++ 和 Java 背景。但是,我也喜欢 .NET 家族的其他编程语言,例如 VB.NET。如果您已经在 .NET 中编程了一段时间,那么在 C# 和 VB.NET 之间来回切换并不是什么大问题。在我工作的公司里,这是非常普遍的做法。作为 C# 专家,我非常喜欢 VB.NET 编译器提供的 XML 文字和 with 关键字。我希望 Microsoft 也将这些功能包括在 C# 中。

我很好奇,其他开发人员对此有何评论!

最佳答案

我个人不喜欢 WITH 在构造之后使用它 - 如果您需要在对象初始化后对它执行几项操作,通常该行为应该封装在类型本身中。如果您真的想做类似 WITH 的事情,只需声明一个短变量并选择性地引入一个新范围即可。

但是, 能够紧凑地初始化具有多个属性的对象很有用 - 这正是 C# 3 允许您编写的原因:

MyObject x = new MyObject { Name="Fred", Age=20, Salary=15000 };

这有一些限制(C# 4 中的可选参数和命名参数将有助于克服这些限制),但它比以前更好,不会导致潜在的困惑/歧义。

(在 XML 文字方面,我再次与 C# 团队在一起 - XML 是一种非常特殊的技术,可以放入一种语言中。如果他们能想出一个通用的形式,恰好创建 XML 但也可用于创建其他树,那会很好——就像查询表达式不直接绑定(bind)到 IEnumerable 或 IQueryable 一样。)

关于c# - 为什么 with() 构造不包含在 C# 中,而它在 VB.NET 中真的很酷?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/429890/

相关文章:

c# - 在 Entity Framework 中分离和附加对象时出错

c# - 将 InkCanvas 笔划转换为字节数组并再次转换回来

vba - UDF 在任何地方都返回相同的值

c# - Dreamweaver CS6-windows 8.1-应用程序无法正确启动(0xc00007b)

Javascript RIA 与 .NET GUI

c# - WIA 常量和值的 Intellisense/文档

vb.net - Visual Studio 中的单元测试

python - python `with`语句用法的其他内置或实际示例?

python - 使用 python with-statement 柯里化(Currying)?

C#:捕获多个图像并保存在同一个文件夹中?