问答详情
源自:2-4 C# 通过set块约束属性赋值

怎么能够引用后只能进行一次赋值

比方说上面的性别,怎么写代码能让Main里赋值一次后就不允许第二次赋值或第二次无效

就像已经被赋值为男,下面在给同一个人赋值为女,下面的这个赋值命令无效

提问者:乌薪王 2018-10-24 00:04

个回答

  • 你最重要79
    2018-10-26 20:50:47
    已采纳

    将属性设置为私有变量,然后只声明公有get方法,然后通过设置一个有参的构造方法,将你要设置的属性值在构造方法中赋值,这样在外部类访问的时候只能赋值一次且不可修改,可以通过公有的访问器方法获取属性值

    我简写一点代码示例

    前面头部和命名空间我省略

    class Child{

      private string name;

      private char sex;

      public Childern(string name,char sex){

        this.name = name;//将传进来的值赋值给当前对象

        this.sex = sex;

      }

      public string Name{

        get {return name;}//只声明get访问器,不要声明set访问器

      }

      public char getSex(){

        get{return sex;}//只声明get访问器,不要声明set访问器

      }

    }

    这样你在其他的类中创建该对象时只有一次赋值操作,但是你要是在Child中写Main方法访问该值,那仍然是可以修改的,因为private的限制范围为“类私有”,只要不出了本类的作用域还是可以修改,但是在其他类新建了Child对象就不可以修改了,比如你在一个叫People的类中new了一个Child对象,这时通过构造器赋值的属性就不可以再修改了