我可以创建一个可以用卷曲bracer初始化的自定义类吗

本文关键字:bracer 初始化 自定义 创建 一个 我可以 | 更新日期: 2023-09-27 18:22:22

我想在C#中构建我自己的类,该类由带卷曲bracer的多个参数初始化,如string[]

string[] x = new string[] {
"string1",
"string2",
"string3"
}

有可能吗?

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

我可以创建一个可以用卷曲bracer初始化的自定义类吗

要支持集合初始值设定项语法,您的类需要实现IEnumerable并具有公共的Add方法。

示例:

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

用法:

var myClass = new MyClass { 1, 2, 3, 4, 5 };

或者,您可以定义一个构造函数,该构造函数接受可变数量的参数。您可以使用params关键字来完成此操作。

示例:

class MyClass
{
    public MyClass(params int[] args) { ... }
}

用法:

var myClass = new MyClass(1, 2, 3, 4, 5);

上面的语法用于初始化数组,而不是类。但是,您可以通过构造函数初始化类中的属性,例如:

MyClass foo = new MyClass()
   {
     X = 1,
     Y = 2
   };

这和做是一样的

MyClass foo = new MyClass();
foo.X = 1;
foo.Y = 2;

是的!Sine C#3.0(我认为)任何实例都可以使用列表初始化器进行初始化!

示例:

class Foo
{
   public int X { get; set; }
   public int Y { get; set; }
}
Foo f = new Foo() { X = 10, Y = 20 };

点击此处查看http://msdn.microsoft.com/en-us/library/bb397680.aspx

List<StudentName> students = new List<StudentName>()
{
  new StudentName {FirstName="Craig", LastName="Playstead", ID=116},
  new StudentName {FirstName="Shu", LastName="Ito", ID=112},
  new StudentName {FirstName="Gretchen", LastName="Rivas", ID=113},
  new StudentName {FirstName="Rajesh", LastName="Rotti", ID=114}
};