zoukankan      html  css  js  c++  java
  • 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()
            {

            }
        }

                                

                            

                    

      

        

      

      

      

      

      

  • 相关阅读:
    如何唤醒一个处于阻塞状态下的线程
    如何终止一个线程
    网络编程基础_5.1聊天室-客户端
    网络编程基础_4.2TCP-客户端
    网络编程基础_4.1TCP_服务端
    网络编程基础_3.APC队列
    网络编程基础_2.等待事件
    网络编程基础_1.等待句柄
    Window提高_3.1练习_双进程守护
    Windows提高_2.3第三部分:内核区同步
  • 原文地址:https://www.cnblogs.com/timeObjserver/p/5926191.html
Copyright © 2011-2022 走看看