属性
通过属性可以对字段设置“读取”和“写入”
例如:
private int exprience;
public int Exprience
{
get
{
return exprience;
}
set
{
exprience = value;
}
}
这里如果我们想要在其他类中对exprience读取和写入,可以通过访问Exprience,同时get 和set 对应字段的读取和写入,如果这个字段只有get,那么这个字段就是只读的,同理就是只写的,同时可以把get和set理解为函数
例如:
public int Level {
get
{
return exprience / 1000;
}
set
{
exprience = value * 1000;
}
}
我们可以通过get,set,像函数一样来设置字段。
在vs中快速创建属性的方法为输入prop然后按住Tab。
三元运算符
例如:
int health = 10;
string message;
message=health>0 ? "Player is Alive" :"Player is Dead";
?后面有两个值,第一个值为health>0为True的情况下,第二个值为health>0为Flase的情况下。
静态
静态成员如变量和方法是跨类的共享成员,静态类可以通过类直接访问,无需先对类的对象进行实例,虽然每个对象都具有相同的变量但是值不同,但是对于静态变量,类的每个对象具有相同的变量,相同的值,如果我们在某一处对静态变量进行了修改,那么其他位置的这个静态变量的值也会修改
例如:
public class Enemy
{
public static int EnemyCount;
public Enemy()
{
EnemyCount++;
}
}
Enemy one = new Enemy();
Enemy twe = new Enemy();
Enemy three = new Enemy();
int numberEnemy = Enemy.EnemyCount;
静态变量EnemyCount会随着Enemy的实例化的个数进行增加,访问静态变量的方法是类名+变量名,静态方法是类名+方法名。
注意:不能在静态方法内部使用非静态成员变量,静态方法属于类,非静态方法属于类的实例化,我们也可以将类设置为静态的,这样就不能实例化了。
方法重载
相同的方法名字不同操作处理
例如:
public int Add(int a,int b)
{
return a + b;
}
public string Add(string a, string b)
{
return a + b;
}
在调用Add时我们根据参数不同选择不同的处理函数。
通用
通用可以理解成泛型(个人理解)
例如:
public T test<T>(T parm) where T : class
{
return parm;
}
这里的T是暂时不确定类型的,在调用时可以对其赋予相应的类型,例如
Test test=new Test()
test.test(5);
类可以使用泛型例如:
public class Enemy<T>
{
T num;
}
Enemy<int > one = new Enemy<int>();
one.num = 5;
继承
一个类继承了另一个类,他同时也会继承类的特征,被继承的类称为基类或者父类,继承的类称为子类或者派生类,继承结果是父类中的项也会存在子类中,因此父类中的方法和变量也可以在子类中使用
例如 ClassA 有两个方法 dance()和singe(),ClassB继承ClassA,那么ClassB也会继承ClassA中的singe()和dance()方法。
在继承过程中要注意访问修饰符,public ,protected,private,
父类为public子类可以访问和使用,
父类为private,父子的项存在子类中但是子类不可以访问,
protected,可以说是两者的结合受保护的父类中的所有特征都会都将存在子类中,并且提供访问,但是在父类和子类的外部不能访问,就像私有属性一样。
多态
多态是继承的一个特征,允许拥有多个类型,在继承过程中任何子类都可以称为父类,这表示需要基类时可以用派生类来替代它