如何在构造函数中分配属性后阻止属性更改?

时间:2017-05-18 06:03:20

标签: c# properties

class Student
{
    private int Id { get; set; }

    public Student(int current_Id)
    {
        this.Id = current_Id;
    }
}

如何在我的类的构造函数中分配属性ID后阻止对其进行更改。如果我对const使用Id,我会收到错误。

2 个答案:

答案 0 :(得分:0)

Id标记为只读:

public readonly int ID;

只能在类的构造函数中更改readonly属性。 Docs

此外,您似乎对current_Id感到困惑。如果您想让每个学生都有不同的ID,请在课程中使current_Id成为私有静态字段,而不是构造函数参数。

private static int current_Id = 0;

const不起作用的原因是标有const的内容在编译时必须具有常量值。显然,学生证不是这样的价值。

答案 1 :(得分:0)

您拥有隐私自动属性。从创建实例的作用域创建实例后,您无法更改任何这些值。改变它们的唯一方法是改变Class的范围。如果您不想允许更改它们(仅允许来自construtor),您可以通过以下方式进行更改

private int Id { get; }

或者您可以使用 readonly 字段中的属性,如@ Sweeper的回答中所述。