如何在构造函数中设置多个记录

时间:2014-07-06 13:06:02

标签: c# asp.net .net

我没有在真正的应用程序中使用它,但我只是对如何做到这一点感到好奇(C#)。

我在构造函数中设置了一个样本数据记录:

public class MikesClass
{
    public MikesClass()
    {
     Id = 01; Name = "Mike";      
    }

    public int Id { get; set; }
    public string Name { get; set; }
}

但我对如何在其中设置另一条记录感到困惑:

public MikesClass()
        {
         Id = 01; Name = "Mike";  

         Id = 02;  Name = "Tom"; ???

        }

如果可能的话,语法是什么?感谢

3 个答案:

答案 0 :(得分:2)

你完全误解了构造函数是什么。构造函数用于one single object。它创建一个单个对象。因此,您无法使用它设置其他记录。该记录将是一个不同的对象。您只需在创建另一条记录时将值设置为构造函数的参数。

所以,至少应该是这样 -

public class MikesClass
{
    public MikesClass(int id, string name)
    {
        Id = id; 
        Name = name;      
    }

    public int Id { get; set; }
    public string Name { get; set; }
}

并且在创建多个记录/对象时在某个距离处 -

var m1 = new MikesClass(0,"name1");
var m2 = new MikesClass(1, "name2");

答案 1 :(得分:2)

每次写作时都使用上面指定的代码:

MikesClass mc = new MikesClass();

您将获得MikesClass类型的对象,Id属性设置为1,Name属性设置为" Mike"。由于MikesClass的每个实例都代表一个对象,因此不能在其中表示多个对象。

您可以做的是修改构造函数以将两个值作为参数。像这样:

public MikesClass(int id, string name)
{
    Id = id;
    Name = name;
} 

然后,您可以使用此代码创建多个MikesClass对象,如下所示:

MikesClass mike = new MikesClass(1, "Mike");
MikesClass tom = new MikesClass(2, "Tom");

希望这是有道理的。

答案 2 :(得分:2)

您展示的是构造函数。它在您创建MikeClass类的实例时运行。 你想要的是创建几个实例。也许在阵列中?

MikeClass[] array = new MikeClass[2];
    MikeClass mc = new MikeClass(); /first instance
    mc.Id = 1;
    mc.Name = "Mike";
    array[0] = mc;
    mc = new MikeClass(); //another instance
    mc.Id = 2;
    mc.Name = "Tom";
    array[1] = mc;
};

这是使用对象初始化器语法:

MikeClass[] array = new MikeClass[] {
    new MikeClass { Id = 1, Name = "Mike" }, //first instance
    new MikeClass { Id = 2, Name = "Tom" }  //another instance
};

您还可以为MikeClass类创建一个带参数的构造函数:

public MikeClass(int id, string name) {
    Id = id;
    Name = name;
}

然后:

MikeClass[] array = new MikeClass[] {
    new MikeClass(1, "Mike"),
    new MikeClass(2, "Tom")
};