zoukankan      html  css  js  c++  java
  • 深入浅出C#中的静态与非静态

    C#语言静态类 vs 普通类 

    C#语言静态类与普通类的区别有以下几点:

    1)C#语言静态类无法实例化而普通类可以;

    2)C#语言静态类只能从System.Object基类继承;普通可以继承其它任何非static和非sealed类,但也只能继承一个类;

    3)C#语言静态类不能继承接口;普通类可以继承多个接口;

    4)C#语言静态类只能包含C#语言静态成员;普通类可以包含C#语言静态和非C#语言静态成员;

    5)C#语言静态类不能作为字段,方法参数和局部变量使用;普通类可以;

    C#语言静态类的意义:  可以用C#语言静态类封装一组不与任何对象相关联的方法,如Math类,Console类。 

    C#语言静态方法 vs C#语言实例方法 

    C#语言静态方法与C#语言实例方法的区别有以下几点:

    1)C#语言静态方法属于类,通过类来调用;C#语言实例方法属于对象,通过对象来调用;

    2)C#语言静态方法不能访问类的非C#语言静态成员;

    C#语言静态方法的意义:  完成一个与特定对象无关的功能。

    C#语言静态字段 vs 非C#语言静态字段 

    C#语言静态字段与非C#语言静态字段的区别:C#语言静态字段属于类,通过类来调用;非C#语言静态字段属于对象,通过对象来调用。

    C#语言静态字段的意义:  可以用C#语言静态字段来记录一些属于类本身的信息。

    C#语言静态构造函数 vs 实例构造函数

    C#语言静态构造函数与实例构造函数的区别有以下几点:

    1)C#语言静态构造函数属于类,在第一次用到该类时执行且只执行一次;实例构造函数属于对象,在每次初始化一个新对象的时候都会执行;

    2)C#语言静态构造函数只能定义一次,且不能包含参数;实例构造函数可以定义重载,且可以包含参数;

    3)C#语言静态构造函数只能访问类型的C#语言静态字段;实例构造函数可以访问类型的C#语言静态和非C#语言静态字段,可参考http://youyanji.bjp111.com

    4)C#语言静态类不能包含访问修饰符,默认为private.

    C#语言静态构造函数的意义:

    设置类型的初始化,例如初始化类型需要的实例对象,为类型的C#语言静态字段赋值等。

         静态类与非静态类的重要区别在于静态类不能实例化,也就是说,不能使用 new 关键字创建静态类类型的变量。在声明一个类时使用static关键字,具有两个方面的意义:首先,它防止程序员写代码来实例化该静态类;其次,它防止在类的内部声明任何实例字段或方法。

    静态成员与非静态成员的调用:

    C#函数成员:
    C#方法可以主要分为C#静态方法,C#实例方法
    C#静态方法:C#静态方法是不属于特定对象的方法,C#静态方法可以访问静态成员变量,C#静态方法不可以直接访问实例变量,可以在实例函数调用的情况下,实例变量做为参数传给C#静态方法。C#静态方法也不能直接调用C#实例方法,可以间接调用,首先要创建一个类的实例,然后通过这一特定对象来调用C#实例方法,但可以调用C#静态方法。

    C#实例方法:

    一个C#实例方法的执行与特定对象关联,他的执行需要一个对象存在。C#实例方法可以直接访问静态变量和实例变量,C#实例方法可以直接访问C#实例方法、和C#静态方法,C#静态方法的访问方式为类名加点操作符加变量名。当多个实例对象存在时,内存中并不是存在美个特定的C#实例方法的拷贝,而是,相同类的所有对象都共享每个C#实例方法的一个复制。

  • 相关阅读:
    Linux内核同步
    Linux内核同步
    Linux内核同步
    Linux内核同步
    Linux内核同步
    Linux中断
    Linux中断
    Linux中断
    Linux中断
    Linux中断
  • 原文地址:https://www.cnblogs.com/learnyou/p/3228888.html
Copyright © 2011-2022 走看看