如何使用构造函数初始化包含该数组的对象列表

时间:2017-02-18 15:42:41

标签: c# arrays constructor

现在,我使用此命令初始化对象列表,它工作正常。

public class RelatedBlog
{
    public string trekid { get; set; }
    public string imagepath { get; set; }

    public RelatedBlog(string trekid, string imagepath)
    {
        this.trekid = trekid;
        this.imagepath = imagepath;          
    }
}

trek.relatedblog = new List<RelatedBlog>            
{
   new RelatedBlog("trekid", "../Images/image.jpg"),         
};

然而,最近我决定不使用单个字符串作为第一个属性,我希望有一个包含多个字符串的数组 - 大小最多为4(但它也可以修复,我可以在初始化期间输入空值) 。这是我正在使用的代码,但它不起作用,它期望更多“(”当我调用构造函数时。

public class RelatedBlog
{
    public string[] trekid { get; set; }
    public string imagepath { get; set; }

    public RelatedBlog(string[] trekid, string imagepath)
    {
        this.trekid = trekid;
        this.imagepath = imagepath;          
    }
} 

trek.relatedblog = new List<RelatedBlog>            
{
   new RelatedBlog({"string1", "string2"}, "../Images/image.jpg"),         
};

有人可以告诉我我在哪里犯了错误,以及如何正确地初始化这个列表。非常感谢

1 个答案:

答案 0 :(得分:2)

使用:

trek.relatedblog = new List<RelatedBlog>
{
    new RelatedBlog(new[] {"string1", "string2"}, "../Images/image.jpg")
};

您正在使用implicitly typed array,编译器可以检测数组内部的类型,但您必须通知它您正在传递数组:

var arr1 = new[] { "hello", "world" };

等于

var arr2 = new string [] { "hello", "world" };