接口与类/结构

接口: 

接口不能被实例化,接口可以继承接口
接口里的方法都是抽象的,没有方法体;
接口可以包含事件、索引器、方法和属性
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;
        }
    }
原文地址:https://www.cnblogs.com/ZkbFighting/p/7590861.html