using System;
namespace EnumStruct
{
class Program
{
static void Main(string[] args)
{
var person = new Person();
var boss = new Person();
var manager = new Person();
var bigboss = new Person();
person.Level = Level.Employee;
manager.Level = Level.Manager;
boss.Level = Level.Boss;
bigboss.Level = Level.BigBoss;
Console.WriteLine((int)person.Level); //0
Console.WriteLine((int)manager.Level); //1
Console.WriteLine((int)boss.Level); //100
Console.WriteLine((int)bigboss.Level); //101
var antetokoumnpo = new Person();
//拥有多个技能
antetokoumnpo.Skill = Skill.Cook | Skill.Basketball | Skill.Swim;
//查看是否有篮球这个技能
Console.WriteLine((antetokoumnpo.Skill&Skill.Basketball)== Skill.Basketball);
//比较类 和结构体的不同
//类
Student stu1 = new Student()
{
Id = 101,
Name = "Giannis"
};
Student stu2 = stu1;
stu2.Id = 1001;
stu2.Name = "LeBron";
Console.WriteLine($"Id:{ stu1.Id} Name:{stu1.Name}"); //Id:1001 Name:LeBron
Console.WriteLine($"Id:{ stu2.Id} Name:{stu2.Name}"); // Id:1001 Name:LeBron
//在类的赋值中, 并没有创建一个新的对象, 公用的一块内存, stu2改变时, stu1一样改变
//是引用 而不是copy
//结构体
StructStudent stu3 = new StructStudent()
{
Id = 101,
Name = "Giannis"
};
StructStudent stu4 = stu3;
stu4.Id = 1001;
stu4.Name = "LeBron";
Console.WriteLine($"Id:{ stu3.Id} Name:{stu3.Name}"); //Id:101 Name:Giannis
Console.WriteLine($"Id:{ stu4.Id} Name:{stu4.Name}"); // Id:1001 Name:LeBron
//结构体是值类型, 定义在栈中, StructStudent stu4 = stu3; 会开辟一块新内存, stu4与stu3不同
}
enum Skill
{
Drive = 1,
Cook = 2,
Basketball = 4,
Teach = 8,
Swim = 16,
}
enum Level
{
Employee,
Manager,
Boss = 100,
BigBoss
}
class Person
{
public int ID { get; set; }
public string Name { get; set; }
public Level Level { get; set; }
public Skill Skill { get; set; }
}
interface ISpeek
{
void Speek();
}
class Student: ISpeek
{
public Student()
{
}
public int Id { get; set; }
public string Name { get; set; }
public void Speek()
{
Console.WriteLine("class Student可以说话!");
}
}
struct StructStudent:ISpeek //只可以继承接口
{
//结构体不能有无参构造函数
//public StructStudent()
//{
//}
public int Id { get; set; }
public string Name { get; set; }
public void Speek()
{
Console.WriteLine("StructStudent可以说话!");
}
}
}
}
C# 枚举和构造体的一些思考
最新推荐文章于 2024-08-11 17:20:20 发布