1.结构 struct
所有的值类型都是一个结构,所有的引用类型都是一个Class 类 (结构是值类型,而类是引用类型)
struct 类型是一种值类型 自定义类型 通常用封装小型相关变量组。
由于结构不使用引用,因此结构没有标识;无法区分具有相同数据的两个类型实例。
与类不同,结构的实例化可以不适用new运算符
结构的实例化有两种方式:
struct MyStr
{
public int i;
}
MyStr ms1 = new MyStr();
MyStr ms2;
ms2.i=10;
struct Goods //相当于模板
{
public void Print()
{
Console.WriteLine(Name + Price + Count);
}
public Goods(string name) //有参的构造函数
{
this.name = "bbb";
this.price = 1.5;
this.count = 5;
}
string name;
public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
double price;
public double Price
{
get
{
return price;
}
set
{
price = value;
}
}
int count;
public int Count
{
get
{
return count;
}
set
{
count = value;
}
}
}
结构可以声明构造函数,但他们必须带函数。
结构可以实现接口
结构的访问修饰符可以是public,internal,但不可以是 protected 默认修饰符为internal.
2.枚举
由一组称为枚举数列表的2命名常量组成的独特类型 “列举”是值类型,继承ValueType的.
枚举类型的图标是两个小标签
Console.WriteLine(Sex.男.ToString()); //枚举类型转化成字符串
// typeof 把某种类型转变成type类型
从字符串到枚举 string类型要转换的值枚举中必须有值
Sex s = (Sex)(Enum.Parse(typeof(Sex), "男"));
从基础数到枚举
Sex ss = (Sex)(-1);
Console.WriteLine(ss);
//循环遍历
foreach (string str in Enum.GetNames(typeof(Sex)))
{
Console.WriteLine(str);
}
enum Sex : uint //无符号整型
{
男 = 0,
女 = 1,
人妖 = 2
}
[Flags] 位运算 或运算
static void Main(string[] args) {
Food food = Food.包子|Food.饺子; Console.WriteLine(food);
}
enum Food
{
包子=1,
面条=2,
饺子=4,
烧饼=8
}
static void Main(string[] args)
{
Console.WriteLine(Enum.Format(typeof(Days), 1, "G"));
Console.WriteLine(Enum.Format(typeof(Days), 1, "X"));
Console.WriteLine(Enum.Format(typeof(Days), 1, "D"));
Console.WriteLine(Enum.Format(typeof(Days), 1, "F"));
}
enum Days
{
周一,
周二,
周三,
周四,
周五,
周六,
周日
}