C#如何正确地获取和设置工作?

时间:2015-04-15 14:03:35

标签: c# list get

我是编程初学者,我想问你最简单的问题 我做了这样的事情:

class person
{
    private string name;
    public string surname;
    private int year;       
}

class student : person
{

}

class Program
{
    static void Main(string[] args)
    {
        List<student> list = new List<student>();

        list.Add(new student()
            {
                surname = "jordan"
            //    name ... ???
            //    year .. ?
            });
    }
}

如果我有get字段,我该如何正确使用setprivate?如何为nameyear分配值?

3 个答案:

答案 0 :(得分:0)

(注意对类和属性使用大写,为字段和局部变量保留小写)。

声明为public properties,如此:

class Person
{
    public string Surname {get; set;}
}

用法:

new Person{
   Surname = "jordan"
};

或使用private setter,并在构造函数中设置。

class Person
{
    public Person(string surname)
    {
       Surname = surname;
    }

    public string Surname {get; private set;}        
}

用法:

new Person("jordan");

private字段,也在构造函数中设置(相同用法)。

class Person
{
    private string surname;

    public Person(string surname)
    {
       this.surname = surname;
    }

    public string Surname {get{return surname;}}        
}

答案 1 :(得分:0)

您可以在构造函数中设置私有属性,如下所示:

public class person
{
    private string name { get; set; };
    public string surname { get; set; };
    private int year { get; set; };

    public person(string name, int year)
    {
        this.name = name;
        this.year = year;
    }
}
public class student : person
{
    public student(string name, int year) : base (name, year) { };
}

并且可以使用:

list.Add(new student("name", 45)
{
    surname = "jordan"
});

答案 2 :(得分:0)

即使字段是私有的,您也可以提供公共属性。你应该这样做,因为这些字段不应该从外部访问,如果它们只是支持属性的字段,则更是如此。

class person
{
    private string name;
    public string Name 
    {
        get { return name; }
        set { name = value; }
    }

    private string surname;
    public string Surname
    {
        get { return surname; }
        set { surname = value; }
    }

    private int year;
    public int Year
    {
        get { return year; }
        private set { year = value; }
    }
}

现在这些字段是私有的,您可以根据需要更改属性的访问修饰符。您甚至可以将setter设为私有,如Year属性中所示。

List<Person> list = new List<Person>();
list.Add(new Person()
{
    Name = "Michael",
    Surname = "jordan",
});

现在您无法从外部修改Year,因为它是private。您可以提供适当的构造函数来初始化它。