1、成员
class的成员要么是静态成员,要么是实例成员。静态成员属于类,而实例成员属于对象。
2、字段
字段是类或类实例相关联的变量
下面的例子里,R,G,B在每个类都有一份,但对于静态变量五个颜色,无论创建多少个实例,只有一份副本。
public class Color
{
public static readonly Color Black = new(0, 0, 0);
public static readonly Color White = new(255, 255, 255);
public static readonly Color Red = new(255, 0, 0);
public static readonly Color Green = new(0, 255, 0);
public static readonly Color Blue = new(0, 0, 255);
public byte R;
public byte G;
public byte B;
public Color(byte r, byte g, byte b)
{
R = r;
G = g;
B = b;
}
}
3、方法
静态方法通过类进行访问,而实例方法是通过类的实例进行访问。
注意: 方法的签名必须是唯一的!!
一个紧凑型方法的例子:
public override string toString() => "This is an object.";
4、四类参数
(1)值参数
修改形参并不会影响实参的值
(2)引用参数
修改引用参数会影响实参的值
(3)输出参数
与引用参数基本一样,但是在调用方法的时候不需要显性赋值,例如可以只写成 (out int res) 调用
(4)参数数组
参数数组允许向方法传递数量不定的自变量。 以Console.WriteLine方法为例,参数1为字符串,参数2为object型的数组
int x = 1;
int y = 2;
int z = 3;
string s = "x = {0}, y = {1}, z = {2}";
object[] para = new object[3];
para[0] = x;
para[1] = y;
para[2] = z;
Console.WriteLine(s, para);
5、静态和实例方法
静态方法只能访问静态成员
实例方法只对特定的实例起作用,能够访问静态和实例成员
6、虚方法、重写方法和抽象方法
看不懂┭┮﹏┭┮,留坑待补充
7、属性
属性是字段的自然拓展。属性最大特点是包含访问器。
get访问器读取此值,set访问器写入该值。
只有get访问器的是“只读属性”,只有set访问器的是“只写属性”。两个都有的叫“读写属性”
8、索引器
索引器的声明方式与属性类似,不同之处在于,索引器成员名称格式为 this 后跟在分隔符 [ 和 ] 内写入的参数列表。
9、多维数组的遍历
方式一:
int[,] a = new int[10,10];
for(int i=0;i<a.GetLength(0);i++)//至第一个维度的长度
{
for(int j=0;j<a.GetLength(1);j++)至第二个维度的长度
{
a[i, j] = i * j;
Console.Write("a[i,j]={0}\t", a[i, j]);
}
Console.WriteLine();
}
Console.ReadLine();
方式二:
int[][] a = new int[3][];//设定第一维长度为3
a[0] = new int[10];
a[1] = new int[5];
a[2] = new int[7];
for(int i=0;i<a.Length;i++)
{
for(int j=0;j<a[i].Length;j++)//类似与C++
{
a[i][j] = i * j;
Console.Write("a[i][j] = {0}\t", a[i][j]);
}
Console.WriteLine();
}
Console.ReadLine();
10、foreach语句适用于任何集合
例子:
foreach(int item in a)
{
Console.WriteLine(item);
}