用构造函数声明人员

时间:2013-08-25 20:13:57

标签: c#

我有一个定义人员的班级(人员),并且包含这些成员:

    public int socialSecurityNr;
    public string name;
    public int age;
    public double heigth;
    public double weigth;
    public string Nationality;
    public int shoeSize;

现在,我想为类创建一个构造函数,该构造函数插入社会安全号的值,并将其余字段设置为空值。我试过这个:

   public People(int socialSecurity, string NAME, string AGE, double HEIGTH)
        {
            socialSecurity= socialSecurityNr;
            this.name = null;
            this.age =  null;
            this.weigth = 0;
        }

这是声明应该设置社会安全号并将其余设置为空的构造函数的正确方法吗?

(问题是,当我创建一个新人时,我应该能够给那个人一个名字,年龄,身高等。)

3 个答案:

答案 0 :(得分:4)

您不能将int声明为null。你可以通过这样做一个可以为空的int来使它可以为空:

public int? age;

答案 1 :(得分:2)

只需在构造函数中包含de ss number即可。默认情况下,所有其他引用类型都将为null。发生错误是因为值类型(如double和int)不能为null。

答案 2 :(得分:1)

如果你没有实例化一个人类的全部值,你可以使用Nullable类型,带“?”在定义。

样本:

public class Person
{
    public int socialSecurityNr;
    public string name;
    public int age;
    public double heigth;

    public Person(int p_socialSecurityNr, string p_name, int? p_age, double? p_heigth)
    {
        this.socialSecurityNr = p_socialSecurityNr; // Can't be null 
        if (p_name != null)
        {
            this.name = p_name;
        }
        if (p_age != null)
        {
            this.age = p_age.Value;
        }
        if (p_heigth != null)
        {
            this.heigth = p_heigth.Value;
        }
    }
}