C# 语法解释

标签 c# .net syntax

几天前我看到了这个语法,想知道是否有人可以告诉我它是如何调用的,它是如何工作的,它在哪里有用。

当我问它如何工作时,我的意思是 Setters 属性是只读的(获取), 第二个是大括号的含义:“Setters = {”。

http://msdn.microsoft.com/en-us/library/ms601374.aspx

谢谢

datagrid.CellStyle = new Style(typeof(DataGridCell))
                {
                    // Cancel the black border which appears when the user presses on a cell
                    Setters = { new Setter(Control.BorderThicknessProperty, new Thickness(0)) } // End of Setters
                } // End of Style

最佳答案

它调用对象初始化器集合初始化器,它允许您在调用构造函数时在{ .. } block 中设置属性.在 block 内,您使用 Setters = { ... } 这是一个集合初始值设定项 - 它允许您指定集合的​​元素(在这里,您不必创建新实例集合 - 它只是在花括号中添加元素)。更多信息see this MSDN page .

一般来说,对象初始化器的语法有几个选项:

// Without explicitly mentioning parameter-less constructor:
new A { Prop1 = ..., Prop2 = ... }
// Specifying constructor arguments:
new A(...) { Prop1 = ..., Prop2 = ... }

集合初始化器的语法如下所示:

// Creating new instance
new List<int> { 1, 2, 3 }
// Adding to existing instance inside object initializer:
SomeList = { 1, 2, 3 }

值得一提的是,这与匿名类型密切相关(您不提供类型名称 - 编译器生成一些隐藏类型,您可以使用 var 处理它):

// Create anonymous type with some properties
new { Prop1 = ..., Prop2 = ... }

所有这些功能都是 C# 3.0 中的新增功能。另见 SO post这解释了集合初始化器的一些棘手方面(以您使用它们的方式)。

关于C# 语法解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5041360/

相关文章:

c - 结构定义的奇怪位置?

c# - 同时使用属性路由和基于约定的路由与 Web API 和 MVC

c# - 我应该如何记录我的 C# 代码?

c# - MsiQueryProductState如何判断安装了VC++

c# - 通过 .NET 自动化在 Word 文档中搜索和替换

c++ - 命名空间范围的构造函数定义是否需要类限定标识符?

c# - c#调用父窗体的方法

c# - 如何使 C# 应用程序作为某些文件的默认程序?

c# - 处理多相机捕获 UWP

javascript - jQuery 中的匿名函数语法