C#语法通过数组中的构造函数params初始化自定义类/对象?

问题描述 投票:16回答:7

我有一个至少有4个变量的类,我已经为类创建了一个构造函数,以便我可以使用它进行初始化

MyClass testobj = new MyClass(1234,56789,"test text", "something else", "foo");

工作良好。

然后我有一个这样的数组,我需要在循环中解析,所以我想得到一些静态数据到这个数组。

我的方法是:

MyClass[] testobjlist = new MyClass 
{
     new MyClass(1001,1234,"Text 1", "abcdefghijklm", "ding"),
     new MyClass(1002,2345,"Text xx", "bla bla", "dong"),
     new MyClass(1003,8653,"Text yy", "blah blah even more", "bamm!")
}

但不知怎的,这给了我一个奇怪的错误,我需要额外的} ???

我不知道我是否应该提到这一点,但是我将它用于使用Razor-engine 2的网页。但我认为这是一个普通的C#问题?

我的解决方法是使用一个大小初始化数组,然后通过索引逐个添加元素,但我宁愿优先使用上面的解决方案,因为我可能需要在测试时按顺序上下移动项目,我有很多真实数据中超过3个。

想知道我在上面的代码中缺少什么......?

c# arrays constructor initialization razor-2
7个回答
21
投票

尝试在新的MyClass之后添加方括号,并在末尾添加分号

    MyClass[] testobjlist = new MyClass[] 
        {
         new MyClass(1001,1234,"Text 1", "abcdefghijklm", "ding"),
         new MyClass(1002,2345,"Text xx", "bla bla", "dong"),
         new MyClass(1003,8653,"Text yy", "blah blah even more", "bamm!")
        };

3
投票

胜利的简写:

var myClassList = new[]
{
    new MyClass(1001,1234,"Text 1", "abcdefghijklm", "ding"),
    new MyClass(1002,2345,"Text xx", "bla bla", "dong")
};

3
投票

这也可以在不需要创建构造函数的情况下工作

new MyClass [] { new MyClass { Field1 = "aa", Field2 = 1 } } 

2
投票

你要:

MyClass[] testobjlist = new MyClass[] { ... }

你最后错过了方括号。


1
投票
MyClass[] testobjlist = 
    {
     new MyClass(1001,1234,"Text 1", "abcdefghijklm", "ding"),
     new MyClass(1002,2345,"Text xx", "bla bla", "dong"),
     new MyClass(1003,8653,"Text yy", "blah blah even more", "bamm!")
    };

0
投票
MyClass[] testobjlist = new MyClass[noOfObjects];
for(int i = 0; i < testobjlist.Length; i++) { testobjlist[i] = new MyClass(); }

0
投票

您可以使用以下代码来表示数组:

additionalusers[] __adiitonaluser =
{
    new additionalusers()
};
__adiitonaluser[0].Email = Userpersonal.Email;
© www.soinside.com 2019 - 2024. All rights reserved.