一、struct结构体
[访问修饰符]struct 结构体名字
{
结构体成员
}
结构体的使用场景
- [ 电脑的内存分为堆内存和栈内存。堆内存空间远大于栈内存,但是栈内存执行效率却高于堆内存 ]
- [ 引用类型保存在堆内存中,而值类型则保存在栈内存 ]
- [ class对象是引用类型,保存在堆内存中,执行效率比较低 ]
- [ struct是值类型,保存在内存中,运行效率高 ]
class的使用场景
- [ 抽象的概念、或者需要多个层级来表现对象关系 ]
- [ 适用于结构复杂的数据 ]
结构体的特点
- [ 可带有方法、字段、索引、属性、运算符方法和事件 ]
- [ 结构不能定义无参的默认构造方法 ]
- [ 结果可实现接口,但他不能继承,也不能被继承 ]
- [ 实例化可以使用new(),但也可以不使用new() ]
struct Game
{
public string name;
public string developer;
public DateTime releaseDate;
public Game(string name, string developer, DateTime date)
{
this.name = name;
this.developer = developer;
this.releaseDate = date;
}
public void GetInfo()
{
Console.WriteLine("游戏名称 "+ name);
Console.WriteLine("developer "+ developer);
Console.WriteLine("date "+ releaseDate);
}
}
class Program
{
static void Main(string[] args)
{
Game game;
game.name = "pokemon";
game.developer = "Crackpot";
game.releaseDate = DateTime.Today;
//必须需要全部成员变量初始化之后,才能调用
game.GetInfo();
Console.Read();
}
}
二、枚举
枚举的每一个项不可改变,其对应数值逐次累加
enum Weekday
{
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SATURDAYS,
SUNDAY,
}
class Program
{
static void Main(string[] args)
{
Weekday friday = Weekday.FRIDAY;
Console.WriteLine(friday.ToString());//输出为FRIDAY
Console.WriteLine((int)friday);//输出为4
var friday2 = (Weekday)4;
Console.WriteLine(friday2);
Weekday day = Weekday.SUNDAY;
switch (day)
{
case Weekday.MONDAY:
case Weekday.TUESDAY:
case Weekday.WEDNESDAY:
case Weekday.THURSDAY:
case Weekday.FRIDAY:
Console.WriteLine("今天要上班 啊");
break;
case Weekday.SATURDAY:
case Weekday.SUNDAY:
Console.WriteLine("休息 吧");
break;
}
Console.Read();
}
}
三、泛型(generic)
Program.cs
//where T : IComparable
//where T : class (product, book)
//where T : struct
//where T : new()
public class Utility<T> where T : IComparable, new()
{
public void DoSomething()
{
var obj = new T();
}
public int FindMax(int a, int b)
{
return a > b ? a : b;
}
public T FindMax(T a, T b)
{
return a.CompareTo(b) > 0 ? a : b;
}
}
class Program
{
static void Main(string[] args)
{
//var numberlist = new List();
var numberlist = new GenericList<int>();
numberlist.Add(1);
numberlist.Add(2);
//var productlist = new Productlist();
var productList = new