本文最后更新于8 天前,其中的信息可能已经过时,如有错误请发送邮件到1077511618@qq.com
C# 基础
C# 复杂数据类型概述
枚举
枚举:枚举是一个被命名的整形常量的集合,一般用来表示状态、类型等等。
申明枚举:相当于创建一个自定义的枚举类型;
申明枚举变量:使用申明的自定义枚举类型创建一个枚举变量。
申明枚举的语法
// 枚举名以E或者E_开头作为我们的命名规范
enum E_自定义枚举名
{
自定义枚举项名字1, // 枚举中包裹的整型常量第一个默认值是0,下面会依次累加
自定义枚举项名字2 = 5, // 也可以在申明的时候进行赋值,此时下一项会根据本项进行累加
自定义枚举项名字3,
}
在哪里申明枚举
①namespace语句块中;
②class , struct语句块中。
不可以在函数中申明枚举!!!
枚举的使用
示例:
enum E_MonsterType
{
Normal,
Boss,
}
class Program
{
// 申明枚举变量
E_MonsterType monsterType = E_MonsterType.Boss;
if (monsterType == E_MonsterType.Boss)
{
Console.WriteLine("大Boss!");
}
else if (monsterType == E_MonsterType.Normal)
{
Console.WriteLine("小怪罢了。");
}
}
枚举的类型转换
enum E_MonsterType
{
Normal = 0,
Boss = 1,
}
class Program
{
E_MonsterType monsterType = E_MonsterType.Boss;
static void Main(string[] args)
{
// 1 - 枚举和int互转
int i = (int)monsterType;
// int转枚举
monsterType = 0;
// 2 - 枚举和string互转
string str = monsterType.ToString();
// string转枚举
monsterType = (E_MonsterType)Enum.Parse(typeof(E_MonsterType) , "Boss");
}
}
数组(简单记录一下)
数组声明
// 一维数组
int[] array1 = new int[5] {1,2,3,4,5};
// 二维数组
int[,] array2 = new int[2 , 2] {{1 , 1} , {2 , 2}};
值和引用类型
ref 和 out
ref 和 out 的作用
它们可以解决在函数内部改变外部传入的内容,函数里面变了,外面也要变。
示例:
static void ChangeArray(int[] arr)
{
arr = new int[] {10 , 20 , 30};
}
int[] arr = new int[] {1 , 2 , 3};
ChangeArray(arr);
Console.WriteLine(arr[0]);
// 可以看到输出结果为 1 ,没有像预想中那样变为 10.
// 原因分析:函数中new了一个新的地址(相当于重新声明了一个数),所以赋值是给了新的地址,原先地址没有改变,arr的元素保持不变。
// 那么如果要把外面的也改变,就要使用ref 和 out:
// ref
static void ChangeArray_1(ref int[] arr)
{
arr = new int[] {10 , 20 , 30};
}
ChangeArray_1(ref arr);
// out
static void ChangeArray_2(out int[] arr)
{
arr = new int[] {10 , 20 , 30};
}
ChangeArray_1(out arr);
// 形参是单个整数也是这样用哦~
ref 和 out 的区别
ref传入的变量必须初始化,而out不需要;
out传入的变量必须在内部赋值,而ref不用。
ref传入的变量必须初始化,但是在内部可改可不改;
out传入的变量不用初始化,但是在内部必须要进行赋值操作。
变长参数和参数默认值
变长参数关键词 params
class Program
{
static int Sum(params int[] arr)
{
for (int i = 0; i < arr.Length; i++)
{
sum += arr[i];
}
return sum;
}
static void Main(string[] args)
{
Sum(1 , 2 , 3 , 4); // 传入多少个都行(只要类型一致)
}
}
注意:params关键词后必为数组;数组的类型可以是任意类型;函数参数可以有别的参数和params关键词修饰的参数;函数参数中只能最多出现一个parmas关键字,并且一定是在最后一组参数,而前面可以有其他参数
参数默认值
有参数默认值的一般称为可选参数;
作用是 当调用函数时可以不传入参数,默认使用默认值作为参数值。
(跟CPP差不多,不多阐述)
注意:
支持多参数默认值,每个参数都可以有默认值。
如果要混用,可选参数必须写在普通参数后面。


soyo最厉害啦