C# 类

1,继承,若基类为带参构造函数,则子类也必须有带参构造函数。
若基类有无参和有参构造函数,则基类可以不提供有参构造函数。

2,构造函数可以被重载(在本类中),可以被显示调用(在构造函数的构造列表中),不能被继承,不可以在其它任何地方调用。

class CTest

{

  //重载------------------------------------------------------

  CTest(int x, int y){}

  CTest(int x) : this(x, 0) //显示调用2参的构造

  {

  }

  //------------------------------------------------------------

}

3,构造函数与析构函数都是不可以被继承的,虽然会被自动调用或在构造列表中手动调用。

4,静态构造函数

静态构造函数是C#的一个新特性,当我们想初始化一些静态变量的时候就需要用到它了。这个构造函数是属于类的,而不是属于哪里实例的,就是说这个构造函数只会被执行一次。也就是在创建第一个实例或引用任何静态成员之前,自动被调用。

5,运算符重载

C#要求所有的运算符重载都声明为publicstatic,这表示它们与它们的类或结构相关联,而不是与实例相关联

不能被重载的运算符:赋值,?,指针,sizeof,is,typeof,new

赋值运算符包括 =, +=, -=, *=, %=,

  struct CSTest
    {
        public int posx;
        public static CSTest operator + (CSTest o1, CSTest o2)
        {
            CSTest ost = new CSTest();
            ost.posx = o1.posx + o2.posx;
            return ost;
        }
        public static CSTest operator - (CSTest ot)
        {
            ot.posx = -ot.posx;
            return ot;
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            CSTest ostn1 = new CSTest();
            CSTest ostn2 = new CSTest();
            ostn1.posx = 1;
            ostn2.posx = 2;
            CSTest ostn3 = ostn1 + ostn2;
            ostn3 = -ostn3;
            Console.WriteLine(ostn3.posx);

        }

    }

6,virtualabstract 区别
    abstract class abclass
    {
        virtual protected void Func() { } //定义虚函数
        abstract protected void FFunc();//定义纯虚函数
    }

    class CA : abclass
    {
        protected override void Func()
        {

        }
        protected override void FFunc()
        {

        }
    }

                            

                        

                

  

    

  

  

  

  

  

原文地址:https://www.cnblogs.com/timeObjserver/p/5926191.html