接口:
接口不能被实例化,接口可以继承接口
接口里的方法都是抽象的,没有方法体;
接口可以包含事件、索引器、方法和属性
Interface IA { string color {set;get;} void Add(); string this[int ,index]{set;get;} event TestDelegate TestEvent }
类:
一个类可以实现多个接口
抽象类和接口都不能被实例化
1.Class可以被实例化,属于引用类型,分配在内存的堆(先进后出,属性)上,Struct属于值类型,分配在内存的栈(先进先出,地址) 2.值类型转换成引用类型的时候,叫装箱;引用类型转换成值类型叫拆箱; (引用类型分配在堆中,因此两个对象指向同一个地址,修改值会该变原来的值)(值类型在栈中,赋值等于全部赋值到P2栈空间,保存的只是引用) 3.结构的成员不能赋初值,类可以,结构不能实例化 4.结构不能继承,但可以实现接口,类都可以 5.结构可以定义带参的的结构函数,负责初始化所用的成员字段
struct属于值类型,可以不用new,如果不new,结构体内的值就都是未赋值状态,
需要在使用之前赋值,不然编译器会报错。若new了,结构体会调用无参构造函数,
会初始化内部的值,比如int就会初始化为0
namespace 结构 { public struct Person { public string _name; //字段 一定要注意细节就是前面的下划线,用于与变量的区别 public int _age; public Gender _Gender; } public struct MyColor { public int _red; public int _green; public int _blue; } public enum Gender { 男, 女 } class Program { static void Main(string[] args) { Person Person; Person._name = "张三"; Person._age = 18; Person._Gender = Gender.男; Person P; P._name = "大黄"; P._age = 12; P._Gender = Gender.女; Console.WriteLine("我叫{0}, 我今年 {1}岁了,我是{2}孩子", Person._name, Person._age, Person._Gender); Console.WriteLine("我叫{0}, 我今年 {1}岁了,我是{2}孩子", P._name, P._age, P._Gender); Console.ReadKey(); // MyColor mycolor; } }