1.三元运算符:条件?表达式1:表达式2
条件满足则返回表达式1,不满足则返回表达式2
嵌套三元运算符:如输入两个数字,获取第一个数字和第二个数字的大小关系。(大于,等于,小于)
int num1 = Convert.ToInt32(Console.ReadLine());
int num2 = Convert.ToInt32(Console.ReadLine());
num1 > num2 ? "大于" : num1 < num2 ? "小于" : "等于"
优点:执行效率高,代码简洁,能直观的表达结果,便于维护
2.常量
语法格式: const 数据类型 常量名 = 常量值
常量定义后就不可以被修改
常量名通常全部大写
3.枚举
枚举为自定义的值类型, 有点类似于结构体,但是区别挺大,枚举类型中存放的都是整形常量,也就是不允许被修改
语法格式 enum 枚举名{
常量名;
}
常量值可以使用默认,也可以手动指定
通常放于命名空间中, 类的上面,表示命名空间下所有类都可以访问这个枚举类型
4.结构体
结构体是一种封装数据可提供相关功能的值类型,它使一个单一变量可以存储各种数据类型的相关变量
语法格式:struct 结构体名{
public 数据类型 字段名;
}
结构体同样放在命名空间中,类上;
5.内存结构
栈区: 存放值类型的实际值,存放引用类型值的地址,由编译器自动编译释放
堆区:存储引用类型的数据,在C#中由.NET提供的GC(垃圾回收机制)管理
数据类型回顾:
值类型:预定义类型:sbyte, byte, short, ushort, int, uint, long, ulong,float,double,decimal
用户自定义类型: enum, struct
引用类型:string
值类型的赋值和比较:
比如说,定义两个变量A,B,将B的值赋给A; 修改B的值,A不会改变
它们是两个不同的变量
比较:值类型之间比较的是实际值
string类型之间的赋值和比较
在赋值给string类型的时候,编译器会判断字符串值是否在驻留池中出现过,如果有就直接返回前地址,没有再申请一个新的空间用来存储该值
比较: string类型比较的是地址值
如string A = "ABCDEFG";
string B = A;
Console.WriteLine(A == B);
A = "ABCD";
Console.WriteLine(A); //ABCD
Console.WriteLine(B); //ABCDEFG
Console.WriteLine(A == B); //False
6.数组
数组是一种可以存放固定个数的相同类型数据的有序集合,数组是引用数据类型
1.数组一旦被创建,它的大小就是不可以改变的。
-
创建了数组,立刻在内存中分配连续的空间,每个元素占用的空间大小是相同的。
-
同一个数组其元素的类型必须是相同类型,不允许出现混合类型。
-
数组类型中存储的数据可以是任何数据类型,包括基本类型和引用类型。
-
数组属于引用数据类型。
因为数组是一块连续的空间,虽然元素的地址是连续的,但是因为有多个元素,那就有多个地址,但是栈空间中只能存放一个地址引用。
数组对象中存放的是数组空间中第一个元素的地址
定义方法
先定义后赋值:int arr\[\] = new int5;
定义同时赋值: int arr\[\] = new int5{1,2,3,4,5};
for循环变量 for(int i; i < 数组.length; i++) 数组名i = 数组中第i个元素的值
foreach遍历
定义方法: for(数据类型 i in 数组名)
{
变量名 = 数组中的元素
}
7.完成简易超市操作系统,实现以下功能



