ref:http://www.router.net.cn/Article/24353.html

C#的类中可以包含两种方法:C#静态方法与非静态方法。那么他们的定义有什么不同呢?他们在使用上会有什么不同呢?让我们来看看最直观的差别:使用了static 修饰符的方法为静态方法,反之则是非静态方法。

下面我们分四个方面来看看C#静态方法与非静态方法的差异:

C#静态方法与非静态方法比较一、C#静态成员:

①静态成员属于类所有,非静态成员属于类的实例所有。

②每创建一个类的实例,都会在内存中为非静态成员新分配一块存储;

非静态成员属于类所有,为各个类的实例所公用,无论类创建了多少实例,

类的静态成员在内存中只占同一块区域。

C#静态方法与非静态方法比较二、C#静态方法

1、C#静态方法属于类所有,类实例化前即可使用。

2、非静态方法可以访问类中的任何成员,静态方法只能访问类中的静态成员。

3、因为静态方法在类实例化前就可以使用,而类中的非静态变量必须在实例化之后才能分配内存,

这样,C#静态方法调用时无法判断非静态变量使用的内存地址。所以无法使用。而静态变量的地址对类来说是固定的,故可以使用。

C#静态方法与非静态方法比较三、C#静态方法是一种特殊的成员方法

它不属于类的某一个具体的实例,而是属于类本身。所以对静态方法不需要首先创建一个类的实例,而是采用类名.静态方法的格式 。

1.static方法是类中的一个成员方法,属于整个类,即不用创建任何对象也可以直接调用!

static内部只能出现static变量和其他static方法!而且static方法中还不能使用this....等关键字..因为它是属于整个类!

2.静态方法效率上要比实例化高,静态方法的缺点是不自动进行销毁,而实例化的则可以做销毁。

3.静态方法和静态变量创建后始终使用同一块内存,而使用实例的方式会创建多个内存.

4.C#中的方法有两种:实例方法,静态方法.

C#静态方法与非静态方法比较四、C#静态方法中获取类的名称

静态方法中用:

  1. string className =
  2. System.Reflection.MethodBase.
  3. GetCurrentMethod().ReflectedType.FullName;

非静态方法中还可以用:

  1. string className = this.GetType().FullName;

C#静态方法与非静态方法的区别解析旨在诠释C#静态方法的含义,希望对你了解和学习C#静态方法与非静态方法有所帮助。

转载于:https://www.cnblogs.com/BpLoveGcy/archive/2010/03/22/1691284.html

C#静态方法与非静态方法的比较 <转载>相关推荐

  1. C#静态类 静态方法与非静态方法比较

    静态类 在类(class)上加入static修饰,表示该类无法被实例化,并将该类中,无法实例化变量或函数 静态类的主要特性 仅包含静态成员 无法实例化 静态类的本质,时一个抽象的密封类,所以不能被继承 ...

  2. C#中静态方法和非静态方法的区别

    静态方法和非静态方法的区别: 1.静态方法不需要类实例化就可以调用,反之非静态方法需要实例化后才能调用: 2.静态方法只能访问静态成员和方法,非静态方法都可以访问: 3.静态方法不能标记为overri ...

  3. 静态方法 与 非静态方法的区别/static 关键字

    为什么80%的码农都做不了架构师?>>>    使用static修饰的静态方法是属于整个类的类方法,它在内存中的代码段会随类的定义而被分配和装载:而非静态方法是属于具体对象的方法,当 ...

  4. java中synchronized修饰静态方法和非静态方法有什么区别?

    Synchronized修饰非静态方法 Synchronized修饰非静态方法,实际上是对调用该方法的对象加锁,俗称"对象锁". Java中每个对象都有一个锁,并且是唯一的.假设分 ...

  5. 使用synchronized修饰静态方法和非静态方法有什么区别

    前言 最近被问到了这个问题,第一次回答的也是很不好,在此参考网上答案进行整理记录.供大家学习参考. Synchronized修饰非静态方法 Synchronized修饰非静态方法,实际上是对调用该方法 ...

  6. java静态方法 问题_Java中堆、栈,静态方法和非静态方法的速度问题

    一.堆和栈的速度性能分析 堆和栈是JVM内存模型中的2个重要组成部分,自己很早以前也总结过堆和栈的区别,基本都是从存储内容,存储空间大小,存储速度这几个方面来理解的,但是关于堆和栈的存储速度,只知道堆 ...

  7. php中静态方法有什么作用,PHP中的静态方法与非静态方法有什么不同吗?

    除此之外,如果您尝试在您的方法中使用$this,如下所示: class t { protected $a = 10; public function tt() { echo $this->a; ...

  8. php中静态方法的调用,php中静态方法和非静态方法如何相互调用?

    php中静态方法和非静态方法如何相互调用?2020-09-01 00:05:28 php中静态方法和非静态方法相互调用的方法:1.非静态方法调用静态方法: 可以[self]或者类名加[::]的形式调用 ...

  9. php 静态方法特点,浅析php静态方法与非静态方法的用法区别

    在php编程中,static关键字声明一个属性或方法是和类相关的,而不是和类的某个特定的实例相关,因此,这类属性或方法也称为"类属性"或"类方法" 如果访问控制 ...

最新文章

  1. web进修之—Hibernate 继承映射(5)
  2. 手动启动“远程过程调用”服务时,出现错误信息1058
  3. “供应链”之后,传统零售如何会战“服务链”?
  4. Spark _22 _创建DataFrame的几种方式(一)
  5. php 文章浏览量 缓存,WordPress缓存文章浏览量访问不自动增加怎么办?WordPress缓存导致文章阅读数点赞数不更新...
  6. linux 进程wait,linux 进程等待 wait 、 waitpid(示例代码)
  7. android 4.4 keyfactory.getinstance 报错_Android实际开发bug大总结
  8. 接口协作--apipost接口协作工具
  9. python调整图像大小_使用Python调整图像大小
  10. 在O(1)的时间内删除链表节点
  11. c语言数据结构练习复数操作
  12. 电子计算机奏出美妙的交响改为把字句,部编版四年级语文上册(课文内容填空+句子专练含答案).doc...
  13. 小黄鸡(小贱鸡)机器人
  14. 初来乍到:新用户冷启的算法技巧
  15. Excel应用:去除重复项,进行个数计算。
  16. ubuntu中如何修改计算机名字
  17. 0xFEFEFEFE 处有未经处理的异常(在xx中): 0xC00001A5: 检测到无效的异常处理程序例程。
  18. 24点卡牌游戏C++实现
  19. Android Preference详解
  20. 学习笔记:使用endnotesX9插入参考文献

热门文章

  1. java react_2019JAVA最新课程-React从入门到实战(新)
  2. c mysql导入数据_MySQL 数据导入
  3. 按clear按钮清空两个文本框的内容,按copy按钮时将Source文本框的内容复制到Target文本框,按close按钮结束程序的运行
  4. java中的随机生成算法_随机生成算法的java代码太复杂了
  5. java如何调用linux命令_java程序中如何调用linux命令
  6. c char转int_C/C++ 各数据类型占用字节数
  7. 把Faster-RCNN的原理和实现阐述得非常清楚
  8. 计算机专业毕业设计中期考核表,研究生中期考核表导师评语
  9. 电子计算机说明文作文,关于电脑说明文作文(精选3篇)
  10. qt qtableview mysql_Qt数据库编程中QTableView使用方法