类的访问修饰符(两种):public internal(默认)
类的成员(方法和变量)访问修饰符(4种):public internal protected private(默认)
1、封装字段与属性
字段为什么用到属性,属性可以对字段进行过滤,比如说,身份证号码,正常变量可以随便乱赋值,而属性就可以限制字段18位。字段默认私有的,需要公有属性给私有字段赋值。
字段和属性的区别:属性不能被传递,字段可以,作用于面向对象,类内部访问可以不需要属性,外部访问必须用属性,比如实体类字段必须定义为属性。
pro p = new();//实例化new:把类变为一个对象叫实例化过程。 Console.WriteLine(p.getStr = "55"); class pro { string str = "11";//在类叫字段,方法中叫变量,没区别 public string getStr { get { return str; } set { str = value; } } //属性c#5.0以前的语法,用公有属性访问私有字段。 public string _getStr { get => str; set => str = value; } //简写,注:value是set访问器的关键字,作用是将外部值赋值给私有字段。 public string __getStr => $"这是6.0的get只读语法{str},适合代码少用。";//和上面一句代码是一样的。不过只有get访问器,没有ste访问器。 //自动属性:prop+两下tab自动生成后备代码相对应私有字段,C#6以后支持合并 public int Pi { get; set; } //属性首字母大写,字段首字母小写。 还可以这样写:{ get; private set; } 只能当前类设置值。 public int pi;//字段和属性的区别:字段可以被当做参数传递;属性不可以做参数传递,相当于保护层。 }
2、构造方法
与类同名且没有返回值,的方法叫,构造方法:实例化对象new的时候自动调用,根据参数调用,作用于初始化类的成员。可以重载但不能有返回值。访问修饰符必须是public
每个类中默认自带一个无参构造。当我们定义了有参构造,无参构造就会消失,如果还需要无参构造时,需要手动写无参构造方法。
this关键字:表示当前类。
pro p = new pro("构造方法传初始化值");//一个括号就表示类的构造函数 //p[0]= "11"; Console.WriteLine(p[0]); class pro { public pro() { }//构造函数访问修饰符必须是public public pro(string str, int i,int a) //当定义了有参构造,默认的无参构造会消失,需要重新写无参构造 { this.str = str;//this指当前类,作用1:当全局变量与局部变量同名,this关键字可以指向类中的全局变量。 this.i = i; this.a = a; } public pro(string str) : this(str, 0, 0) { }//this作用2:调用多参数的构造函数,方法体不需要写。 public string str { get; set; } public int i { get; set; } public int a { get; set; } //this作用3:索引器 public string this[int index] //可以重载的 { get { return index switch { 0=>str, 1=>i.ToString(), 2=>a.ToString(), _=>"不在制定范围" }; } set { var v = index switch { 0 => str = value, _ => "不在制定范围" }; } } }
3、析构方法
语法:~类名(){ }
作用:回收内存空间,当对象执行结束后执行。并且每个类只能有一个析构方法。
Pro p = new Pro(); class Pro { public Pro(){ Console.WriteLine("构造执行前调用,new的时候调用,初始化数据.");} ~Pro() { Console.WriteLine("析构方法结束后自动调用,做一些垃圾处理。调用时间不确定。"); } }
标签:set,get,C#,pro,public,str,class,属性 From: https://www.cnblogs.com/longxinyv/p/16795175.html