-----对象 类
类 : 数据成员 + 函数成员
数据成员:字段+常量+事件成员常量:修饰词 const : public const string a = "hello" ;
函数成员:方法 + 属性 + 构造函数+终结器(finalize) + 运算符 + 索引器
方法:给方法传递参数: 按值传递 + 按引用传递
按引用传递 有关键词 ref 和 out
ref 要求对传递给方法的的参数 初始化, out 则不必
int a;
aa(ref a); // 编译时报错,提示a 没初始化
public static void aa(ref int i)
{
i++;
}
int a;
aa(out a);
public static void aa(out int i)
{
i = 0;
i++;
}
方法的重载:相同函数名,不同的参数个数 或类型 (如构造函数)
属性:
一般的属性申明:
private int age;
public int Age
{
get { return age; }
set { age = value; }
}
====》如果没有任何逻辑 可自动实现属性 等价于
public int Age { get; set; }
构造函数:
静态构造函数:只会执行一次,类加载的时候执行,普通构造函数,实例化的时候就会执行
只读字段 :
于 const 区别 : 不用一开始就初始化,可以再构造函数中赋值,其他地方不可以
匿名类:
var preson = new { FirstName = "zhang", LastName = "cheng", age = 33 };
结构 :
结构不允许定义无参构造函数,因为系统自动实现,所以不能再 定义结构成员变量时初始化
结构申明方式 类似于类
aa a = new aa() 也可 aa a;
扩展方法: 不能改变源码,而增加源码中的方法
见代码
//定义类
class CC
{
int c;
public int C
{
get { return c; }
set { c = value; }
}
public void add()
{
this.C--;
}
}
//定义静态类
static class CcE
{
public static void decue(this CC c, int i) //这变的两个参数第一个为 要增加的原始类
{
c.C--;
}
}
//调用方法中
CC C = new CC();
C.C = 10;
C.decue(1);