我可以创建一个可以用花括号初始化的自定义类吗?

And*_*ein 1 .net c#

我想在C#中构建我自己的类,它由多个带有花括号的参数初始化,比如 string[]

string[] x = new string[] {
"string1",
"string2",
"string3"
}
Run Code Online (Sandbox Code Playgroud)

可能吗?

编辑我很抱歉没有让自己清楚.我想要一个可以以优雅的方式初始化的类,具有可变数量的参数.

dtb*_*dtb 14

要支持集合初始化程序语法,您的类需要实现IEnumerable并具有公共Add方法.

例:

class MyClass : IEnumerable<int>
{
    public void Add(int value) { ... }

    public IEnumerator<int> GetEnumerator() { ... }

    IEnumerator IEnumerable.GetEnumerator() { ... }
}
Run Code Online (Sandbox Code Playgroud)

用法:

var myClass = new MyClass { 1, 2, 3, 4, 5 };
Run Code Online (Sandbox Code Playgroud)

或者,您可以定义一个带有可变数量参数的构造函数.您可以使用params关键字执行此操作.

例:

class MyClass
{
    public MyClass(params int[] args) { ... }
}
Run Code Online (Sandbox Code Playgroud)

用法:

var myClass = new MyClass(1, 2, 3, 4, 5);
Run Code Online (Sandbox Code Playgroud)