金沙国际官网_金沙国际平台登录

因为这个金沙国际官网_金沙国际平台登录网站与很多的大型澳门赌场都有合作,金沙国际官网_金沙国际平台登录尽职尽责,高效执行,保持好奇心,不断学习,追求卓越,点击进入金沙国际官网_金沙国际平台登录马上体验吧,所以现在也正式地开始了营业。

您的位置:金沙国际官网 > 编程 > 高端编制程序笔记,MVC学习此前必需调整的c

高端编制程序笔记,MVC学习此前必需调整的c

发布时间:2019-11-04 21:11编辑:编程浏览(151)

    一.类自动属性

    1、虚方法:把一个基类函数声明为 virtual,就可以在任何派生类中重写该函数。

    1.线程进程
    进程:程序并不能单独运行,只有将程序装载到内存中,系统为它分配资源才能运行,而这种执行的程序就称之为进程,不具备执行感念,只是程序各种资源集合

    图片 1图片 2

    2、在Java 中所有函数都是虚拟的,但是在C# 中,C# 要求在派生类的函数重写另一个函数时,要使用 override 关键字显式声明。

    线程:线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务

      1 public class Person
      2     {
      3         //自动属性
      4        public string Name { get; set; }
      5 
      6         private int _age;
      7 
      8         public int age {
      9             get { return _age; }
     10             set { _age = value; }
     11         }
     12     }
    
    //父类
    class MyBaseClass{
        public virtual string VirtualMethod(){
            return "This is test!";
        }
    }
    
    //派生类
    class MyDerivedClass:MyBaseClass{
        public override string VirtualMethod(){
            return "Haha, I override you."
        }
    }
    

    2.线程与进程的区别

    View Code

    3、成员字段和静态函数都不能声明为 virtual ,因为这个概念只对类中的实例函数成员有意义。

    线程共享内存空间,                                                                                               进程的内存是独立的

    Name为类的自动属性,其实跟下面age的定义方法是一样的,只不过是微软自动帮你生成了字段。

    4、隐藏方法:如果签名相同的方法在基类和派生类中都进行了声明,但该方法没有分别声明为 virtual 和 override ,派生类的方法就会隐藏基类方法。在大多数情况下,是要重写方法,而不是隐藏方法,因为隐藏方法会造成对于给定类的实例调用错误方法的危险。在c#中,要隐藏一个方法,应该使用 new 关键字声明。

    线程共享创建它的进程的地址空间;                                                                        进程拥有自己的地址空间。

    二.隐式类型

    class MyDerivedClass:MyBaseClass{
        public new string VirtualMethod(){
            //...
            return 0;
        }
    }
    

    线程可以直接访问其进程的数据段;                                                                        进程拥有父进程的数据段的自己的副本。

    图片 3图片 4

    5、调用函数的基类版本 : base . <MethodName>()

    线程可以直接与其进程的其他线程通信;                                                                 进程必须使用进程间通信与兄弟进程进行通信。

      1         static void Var()
      2         {
      3             var person = new Person();
      4 
      5             var p = person;
      6         }
    
    class MyBaseClass{
        public virtual string getName(){
            return "Hello ,Robert!";
        }
    }
    
    class MySonClass : MyBaseClass{
        public override string getName(){
            return base.getName();
        } 
    }
    

    新线程很容易创建;                                                                                                  新流程需要重复父流程。

    View Code

    6、【专题】抽象类和抽象函数。(abstract)

    线程可以对同一进程的线程进行相当程度的控制;                                                   进程只能对子进程进行控制。

    1.var类型会被编译器根据初始值的类型自动推断出具体的类型。

      **抽象类:**

    对主线程的更改(取消,优先级更改等)可能会影响进程其他线程的行为;            对父进程的更改不会影响子进程。

    1. var类型不能做参数。
      • 抽象类不能被密封(sealed)。
      • 抽象类不能被实例化。
      • 如果类包含抽象函数,则该类也是抽象的。也必须声明为抽象的。

     

    3.无法将null赋值给var类型。

      抽象函数:

    3.一条进程至少有一条线程

    4.语句中只声明一次变量,声明后不能更改类型。

      • 抽象函数不能直接实现,必须在非抽象的派生类中重写。
      • 抽象函数本身也是虚拟的(尽管也不需要提供 virtual 关键字,实际上,如果提供了该关键字,就会产生一个语法错误。)不需要显式写出 virtual。

    4.线程锁
        每个线程在要修改公共数据时,为了避免自己在还没改完的时候别人也来修改此数据,可以给这个数据加一把锁, 这样其它线程想修改此数据时就必须等待你修改完毕并把锁释放掉后才能再访问此数据

    三、匿名类

     7、密封类和密封方法。 sealed 

     

    图片 5图片 6

      对于类:表示不能继承该类。

    5.Semaphore(信号量)

      1         static void W02AnmClass()
      2         {
      3             var d = new { name = "张三", age = 13 };
      4             var d2 = new { name = 12, age = "13" };
      5             var d3 = new { name = "张三", age = "13", gender="男"};
      6         }
    

      对于方法:表示不能重写该方法。

        互斥锁 同时只允许一个线程更改数据,而Semaphore是同时允许一定数量的线程更改数据 ,比如厕所有3个坑,那最多只允许3个人上厕所,后面的人只能等里面有人出来了才能再进去。

    View Code

      string 为密封类。

     

    1.匿名类本质上是编译器生成的一个泛型类。

      要在方法或属性上使用 sealed 关键字,必须先从基类上把它声明为要重写的方法或属性。如果基类上不希望有重写的方法或属性,就不要把它声明为 virtual。

    6.join的作用是 等待线程执行完毕

    2.当匿名类的参数个数一样的时候是共用一个泛型类。

    8、【派生类中的构造函数执行过程】

     

    3.当匿名类的参数个数不一样的时候是各自生成不同的泛型类。

    abstract class GenericCustomer{
        private string name;
    }
    
    class NevermoreCustomer:GenericCustomer{
        private uint highCostMinutesUsed;
    }
    
    GenericCustomer customer=new NevermoreCustomer();
    

    7.练习

    4.匿名类初始化的时候一定要赋值。

    图片 7

    信号量

    四、默认值和命名参数

     

    __author__ = "Narwhale"
    
    import threading,time
    
    def run(n):
        semaphore.acquire()
        time.sleep(1)
        print('线程%s在跑!'%n)
        semaphore.release()
    
    if __name__ == '__main__':
        semaphore = threading.BoundedSemaphore(5)      #最多5个线程同时跑
        for i in range(20):
            t = threading.Thread(target=run,args=(i,))
            t.start()
    
    while threading.active_count() !=1:
        pass
    else:
        print('所有线程跑完了!')
    

    本文由金沙国际官网发布于编程,转载请注明出处:高端编制程序笔记,MVC学习此前必需调整的c

    关键词:

上一篇:没有了

下一篇:没有了