1、自动属性
自动属性是c#中属性定义的两种形式的一种:传统属性定义、自动属性。
1.1 传统属性定义
private int _age;
public int Age
{
get { return _age; }
set { _age = value; }
}
1.2 自动属性
public int Age{get;set;}//该句代码的作用和上面传统属性定义的语句的作用是一样的
1.3 两种属性定义形式的优缺点对比
1.3.1 传统属性定义形式
缺点:定义属性的代码多 语法不简洁 繁琐
优点:定义属性的时候,可以带一些逻辑判断,这是自动属性所不能做到的。
例如:
private int _age;
public int Age
{
get { return _age; }
set {
if((0<value)&&(value<200))
{
_age = value;
}
}
}
1.3.2 自动属性定义形式
优点:定义语法简介,高效、减少程序员书写的代码量
缺点:定义属性的时候,不能做一些逻辑判断。
2、属性的作用
1、定义属性可以保护类的私有字段(封装性)
2、简化了对类的调用(定义属性之后,要调用累得字段_age,不需要再实例化类了)
3、隐式类型 var
3.1概述
定义变量的方式有两种:传统定义方式、定义成隐式类型。
传统定义方式:数据类型+变量名(定义的时候可以初始化,也可以不初始化) int k=0;int k;
隐式类型定义方式:var+变量名(定义的时候必须初始化)var k=0;、
3.2 注意
(1).声明的同时必须初始化,因为编译时要根据初始化值类型来推断var的类型;
(2).声明后不能再修改数据类型,因为初始化的时候已经确定了var的类型了;
(3).只能作为方法局部变量使用。类的成员字段、方法的形参和返回值都不能使用!因为无法在编译时确定他们的类型!
(4).初始化表达式不能是匿名函数和null。
(5)、隐式类型不是动态类型,编译的时候,.net框架把var k=0;转换成了int k=0;