问题标签 [collection-initializer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 对象和集合初始化器和访问器
我想从我是 C# 新手开始,所以访问器和对象初始化器对我来说是一个全新的概念。也就是说,我认为我可以很好地处理它们,除了以下示例真的让我感到困惑:
上述代码的输出是(请参见此处的实时示例):
Field
完全按照我的预期运行,但Coll
让我感到困惑。setterColl
永远不会被调用,这对我来说意味着集合初始化器不会与属性(或至少非自动属性)混合。但是,如果是这种情况,我会预料到会出现编译时错误。
不管那部分行为如何,让我更加困惑的是,内部值以coll_
某种方式设置为初始化器值。
我很想知道 a) 为什么Coll
不调用 set ,以及 C# 如何设置coll_
. 在 get 和 set 访问器中使用该标识符是否Coll
足以让 C# 识别coll_
为内部存储;或者可能是因为它是相应类型的唯一成员而设置的?
c# - 初始化类中的列表以从函数中获得可用性
我想在类中使用集合初始化器值初始化列表,以使其可用于单独的函数:
带括号和不带括号的列表有什么区别,哪个适合这种情况:
c# - 这两种集合初始化表达式的变体有什么区别?
我使用 C# 已经有一段时间了,但最近注意到我的一个单元测试的行为会根据我使用的集合初始化表达式的变体而改变:
var object = new Class { SomeCollection = new List<int> { 1, 2, 3 } };
var object = new Class { SomeCollection = { 1, 2, 3 } };
到目前为止,我认为第二种形式只是语法糖,在语义上等同于第一种形式。但是,在这两种形式之间切换导致我的单元测试通过失败。
下面的示例代码演示了这一点:
当我运行它时,第一个分配工作正常,但第二个结果是NullReferenceException
.
我的直觉是,编译器在幕后将这两个表达式视为:
这个假设准确吗?
c# - 声明字典> 里面已经有函数c#
首先,我什至不知道在传递4个参数但没有返回值时使用什么,我只是以Func为例。
我不想使用 Dictionary.Add 插入我的函数,我希望它在初始化字典时在里面。
c# - IEnumerable Add 方法仅在使用集合初始值设定项时可用
我打算创建一个基于 JObject 的不可变类。
要求之一是将对象直接反序列化到我的新自定义类上,就像我们对 JObject 所做的那样。
我已经实现了 GetEnumerator 和 Add 方法来启用集合初始化程序。
代码如下所示
只有在使用集合初始化程序时才能使 Add 方法可访问?
由于本质上是不可变的,我不希望 Add 方法公开。但是,它看起来需要公开才能启用集合初始化程序
提前谢谢!
c# - 集合初始化程序c#中的函数/方法
我可以在集合初始化程序中插入方法/函数吗?我试图在集合初始化程序中的函数中插入表达式,但类中的变量要求声明它的主体。谢谢你。
c# - C#为什么字典允许属性设置虽然属性是内部设置
我正在使用流利的验证 API 来编写验证。
我在课堂上遇到了一处internal set
房产ValidationContext
。
我在这个问题中遇到了内部设置属性。所以,我可以像这样设置字典的值
上面的代码将一个项目添加到RootcontextData
作品中。
但是以下将另一个字典直接分配给 RootContextData 的行会导致编译时错误。
无法将属性或索引器“ValidationContext.RootContextData”分配给——它是只读的
因此,要将项目字典添加到上下文数据中,我必须遍历要添加的字典。我很惊讶为什么第一个有效但不是直接分配。
c# - 用于自定义矩阵类的 C# 集合初始化语法?
我正在创建一个自定义矩阵类,它只有一个 2D 数组来保存所有内容(我知道 1D 数组更快更好,但这不是这个实现的重点)问题是,我想要一个构造函数,并且能够做类似的事情
并解决所有问题。我遇到了“'Matrix'不包含'Add'的定义并且没有扩展方法'Add'等。” 但是环顾四周后,我还没有找到足够可靠的信息来说明如何定义 Add() 方法以使其工作。这是我到目前为止的代码
那么,无论如何我将如何执行 Add() 方法?
c# - 使用 foreach 循环的 C# 列表或集合初始化程序
是否可以在 C# 中执行类似于以下的操作?
我正在做一些 XML api,进来的请求对象类似于需要出去的响应对象。如果可能的话,上述方法将非常方便;比自动映射器要多得多。
c# - 用方括号初始化元素,如 c# 中的列表
我在考虑数组和列表,想知道类是否以及如何使实现像它们一样可初始化。让我们以这个类为基础:
我想做的是获取给定的值并在内部填写我的列表。
通常可能是这样的:
但我想将它用于我自己的自定义类。下一个问题是可选的,是否可以对这种语法做同样的事情:
我认为这不太可能。请注意,这些与此不同:
这些是内部字段和属性的直接和可选声明。