C#静态类 静态方法与非静态方法比较
静态类
在类(class)上加入static修饰,表示该类无法被实例化,并将该类中,无法实例化变量或函数
静态类的主要特性
- 仅包含静态成员
- 无法实例化
- 静态类的本质,时一个抽象的密封类,所以不能被继承
- 不能包含实例构造函数
- 如果一个类下面的所以成员都需要被共享,那么此类可以定义为静态类
所以,可以在普通类中添加静态方法,但是静态类中的方法、变量都必须是静态的。
c#静态方法与非静态方法比较
一、静态方法:使用static修改的方法就是静态方法,否则就是非静态方法。
二、
(1)静态成员属于类的所以,非静态成员属于类的实例所以。
(2)每创建一个类的实例,都会在内存中为非静态成员新分配一块存储
总结:静态成员属于类所以,为各个类的实例所公用,无论类创建了多少实例,类的静态成员在内存中只占一块存储。
三、
(1)c#静态方法属于类所以,类实例化前即可使用
(2)非静态方法可以访问类中的任何成员,静态方法只能访问类中的静态成员
(3)因为静态方法在类实例化前就可以使用,而类中的非静态变量必须在实例化之后才能分配内存。这样的话C#静态方法调用时无法判断非静态变量使用的内存地址,所以静态方法所以无法使用非静态变量,但静态变量地址对类来说是固定的,所以静态方法可以使用静态变量。
(4)C#静态方法是一种特殊的成员方法,它不属于类的某一个具体实例,而是属于类本身。所以对于静态方法不需要首先创建一个类的实例,而是采用 类名.静态方法 的格式。
1.static方法是类中的一个成员方法,属于整个类,即不用创建任何对象也可以直接调用!
2.静态方法效率上要比实例化高,静态方法的缺点是不自动进行销毁,而实例化的则可以做销毁。
3.静态方法和静态变量创建后始终使用同一块内存,而使用实例的方式会创建多个内存.
4.C#中的方法有两种:实例方法,静态方法.
四、
C#静态方法中获取类的名称
静态方法中用:
string className = System.Reflection.MethodBase.GetCurrentMethod().ReflectedType.FullName;
非静态方法中还可以用:
string className = this.GetType().FullName;
C#静态方法与非静态方法的区别解析旨在诠释C#静态方法的含义,希望对你了解和学习C#静态方法与非静态方法有所帮助。
转载于:https://www.cnblogs.com/studydp/p/9027085.html
C#静态类 静态方法与非静态方法比较相关推荐
- php静态类 使用场景,【php】PHP静态方法和非静态方法的使用场景
单纯的语法上是没有什么问题的 但对静态方法和非静态方法的使用场景 什么情况下该用什么希望大家能讲解下 我现在的使用情况是: 基本上都是实例方法, 除了单例, 工厂, 几个设计模式时使用! 其他的时机完 ...
- 静态方法和非静态方法的区别JAVA
最近在写JAVA程序的时候报了一个错. No enclosing instance of type FileRead is accessible. Must qualify the allocatio ...
- java中synchronized修饰静态方法和非静态方法有什么区别?
Synchronized修饰非静态方法 Synchronized修饰非静态方法,实际上是对调用该方法的对象加锁,俗称"对象锁". Java中每个对象都有一个锁,并且是唯一的.假设分 ...
- 使用synchronized修饰静态方法和非静态方法有什么区别
前言 最近被问到了这个问题,第一次回答的也是很不好,在此参考网上答案进行整理记录.供大家学习参考. Synchronized修饰非静态方法 Synchronized修饰非静态方法,实际上是对调用该方法 ...
- java静态方法 问题_Java中堆、栈,静态方法和非静态方法的速度问题
一.堆和栈的速度性能分析 堆和栈是JVM内存模型中的2个重要组成部分,自己很早以前也总结过堆和栈的区别,基本都是从存储内容,存储空间大小,存储速度这几个方面来理解的,但是关于堆和栈的存储速度,只知道堆 ...
- php中静态方法有什么作用,PHP中的静态方法与非静态方法有什么不同吗?
除此之外,如果您尝试在您的方法中使用$this,如下所示: class t { protected $a = 10; public function tt() { echo $this->a; ...
- php中静态方法的调用,php中静态方法和非静态方法如何相互调用?
php中静态方法和非静态方法如何相互调用?2020-09-01 00:05:28 php中静态方法和非静态方法相互调用的方法:1.非静态方法调用静态方法: 可以[self]或者类名加[::]的形式调用 ...
- C#中静态方法和非静态方法的区别
静态方法和非静态方法的区别: 1.静态方法不需要类实例化就可以调用,反之非静态方法需要实例化后才能调用: 2.静态方法只能访问静态成员和方法,非静态方法都可以访问: 3.静态方法不能标记为overri ...
- php 静态方法特点,浅析php静态方法与非静态方法的用法区别
在php编程中,static关键字声明一个属性或方法是和类相关的,而不是和类的某个特定的实例相关,因此,这类属性或方法也称为"类属性"或"类方法" 如果访问控制 ...
最新文章
- 2009全国公共英语五级(PETS-5)考试大纲概述
- Linux查看系统开机时间(转)
- keil5图标变成白色_keil5菜单栏图标错乱怎么办? keil5菜单栏快捷图标错位的解决办法...
- java分别使用for循环语句计算n!_实验三:分别用for、while和do-while循环语句以及递归方法计算n!,并输出算式...
- gson json转map_Java几种常用JSON库性能比较
- Dnslog在SQL注入中的利用
- Andrew Ng教你如何引领公司进入AI时代
- 如何设置允许PP视频访问相机
- RISC-V 没你想象的那么好
- 面试宝典系列-Mysql索引的区别
- java recordset_连接数据库返回recordset
- 人脸检测(十)--强分类器源码分析
- Windows下配置网络管理软件--MRTG
- opencv提取图像的缺陷并用最小矩形框出来
- iconfont阿里矢量图标库的引入与使用
- 数码视讯Q1、Q5机顶盒线刷固件
- 国内外优秀的计算机视觉团队汇总
- iOS开发 适配iPhone XS Max/iPhone XR
- 昌航程序设计竞赛初赛(周五晚19点)
- ftp免费空间,1种适合小白级别的搭建ftp免费空间的方法