与Java区别
参数地址传递:ref 例:public void init ( ref int i , ref string s ){ }
数组循环:foreach
访问器(get、set):例
private int age;
public int Age
{
get { return age; }
set
{
if (value >= 0 && value <= 100)
{
age = value;
}
else
{
age = 18;
}
}
}
常量:const
析构函数:~类名 例:~Student(){} 与构造函数相反,当对象生命周期结束调用。
~Student()
{
Console.WriteLine("析构函数被调用了");
}
枚举:关键字:enum
特点:1)枚举是一组描述性的名称
2)枚举对可能的值进行约束
3)枚举允许描述性名称表示整数值,默认从0开始。
用法:1.定义一个枚举并定义值 (不能包含方法)
public enum EnumSex
{
Man,Woman
}
2.创建枚举类型变量
private EnumSex sex;
public EnumSex Sex
{
get { return sex; }
set { sex = value; }
}
3.给变量赋值(只能选择定义的枚举内的值)
Student stu = new Student();
stu.Age = -19;
stu.Likes = "唱歌";
stu.Sex = EnumSex.Woman;//给定义的枚举变量赋值
stu.Say(); //打印输出信息
Console.ReadLine();
4.输出信息中可以添加判断
public void Say()
{
String sSex;
if (sex == EnumSex.Man)//对枚举变量进行判断
{
sSex = "男";
}
else
{
sSex = "女";
}
Console.WriteLine("我的名字是:{0},性别:{1},今年{2}岁,我喜欢{3}.",name,sSex,age,likes);
}
结构:关键字:struct
用法与类相似,创建对象可以不用new,可以有构造方法,但是必须写带参数的构造方法。
与类相同点:
类 | 结构 | |
---|---|---|
不同点 | 引用类型 | 值类型 |
可以被继承 | 不能被继承 | |
可以有默认构造函数 | 不可以有默认构造函数 | |
可以添加无参构造函数 | 可以添加构造函数,但必须带参数 | |
创建对象必须使用new | 创建对象可以不用new | |
类中可以给字段赋值 | 结构中给字段赋值是错误的 | |
引用类型 | 值类型 | |
相同点 | 都可以包含字段、方法 | |
都可以实现接口 |
值类型和引用类型
值类型值存放到栈中
引用类型值存放在堆中,栈中存放的是对值的引用地址
类是引用类型,结构是值类型