C#编程(二十)----------静态类
如果类只包含静态的方法和属性,该类就是静态的.静态类在功能上与使用私有静态构造函数创建的类相同.不能创建静态类的实例.使用关键字static关键字,编译器可以检查用户是否不经意间给类添加了实例成员.如果是,就生成一个编译错误.这可以确保不创建静态类的实例.
语法:
static class StatucTest
{
public static void SayHello()
{}
}
如果要调用SayHello(),不需要创建StaticTest类型的对象,使用类型名即可进行调用.
StatucTest.SayHello();
静态类与非静态类的重要区别在于静态类不能实例化,也就是说,不能使用 new 关键字创建静态类类型的变量。在声明一个类时使用static关键字,具有两个方面的意义:首先,它防止程序员写代码来实例化该静态类;其次,它防止在类的内部声明任何实例字段或方法。
静态类的主要特征:
1.仅包含静态成员
2.无法实例化
3.是密封的
4.不能包含实例构造函数
静态成员
1.非晶体啊类可以包含静态的方法,字段,属性或时间;
2.无论对一个类创建多少个实例,他的静态成员都只有一个副本
3.静态方法和属性不能访问其包含类型中的非静态字段和事件,并且不能访问任何对象的实例变量
4.静态方法只能被重载,而不能被重写,因为静态方法不属于类的实例成员
5.虽然字段不能声明为static const,单const字段的行为在本质上是静态的,这样的字段属于累,不属于类的实例.因此可以像使用静态成员的方法使用const字段,类名.成员.
静态构造函数
1.静态类可以有静态函数,静态构造函数输不可继承
2.静态构造函数可用于静态类,也可用于非静态类
3.静态构造函数无访问修饰符,无参数,只有一个static标志
4.静态构造函数不可被直接调用,当创建类实例或引用静态成员之前,静态构造函数被自动执行,并只执行一次.
注意
1.静态类在内存中是一直有位置的
2.非静态类在实例化后实在内存中是独立的,他的变量不会重复,在使用后会及时小孩,所以不会出现未知的错误.在C#中静态成员是比较敏感的东西,不确定还是不要使用了
3.建议更多的使用一般类(非静态类).
使用选择:
当定义的类不需要实例化,使用静态类;如果需要实例化,需要继承等特性是,应该使用一般类.
C# 静态成员和方法的学习小结
数据成员:
数据成员可以分静态变量、实例变量两种.
静态成员:静态成员变量是和类相关联的,可以作为类中"共"有的变量(是一个共性的表现),他不依赖特定对象的存在,访问的时候通过类名加点操作符加变量名来访问.
实例成员:实例成员变量是和对象相关联的,访问实例成员变量依赖于实例的存在.
函数成员:
方法可以主要分为静态方法,实例方法
静态方法:静态方法是不属于特定对象的方法,静态方法可以访问静态成员变量,静态方法不可以直接访问实例变量,可以在实例函数调用的情况下,实例变 量做为参数传给静态方法。静态方法也不能直接调用实例方法,可以间接调用,首先要创建一个类的实例,然后通过这一特定对象来调用静态方法。
实例方法:一个实例方法的执行与特定对象关联,他的执行需要一个对象存在。实例方法可以直接访问静态变量和实例变量,实例方法可以直接访问实例方 法、和静态方法,静态方法的访问方式为类名加点操作符加变量名。当多个实例对象存在时,内存中并不是存在美个特定的实例方法的拷贝,而是,相同类的所有对 象都共享每个实例方法的一个拷贝(实例方法只占用“一套”空间)。
如果将类中的某个成员声明为static,则称该成员为静态成员。一般来说,静态成员是属于类所有的,而非静态成员则属于类的实例的。每创建一个类的实 例,都在内存中为非静态成员开辟一片区域。而类的静态成员为类所有,为这个类的所有实例共享。无论这个类创建了多少副本,一个静态成员在内存中只占有一块 区域。
C#类中静态成员变量的生命周期问题,就是什么时候创建,什么时候销毁已声明元素的“生存期”是元素可供使用的时间周期。变量是唯一具有生存期的元 素;为此,编译器将过程参数和函数返回值视为变量的特殊情况。变量的生存期表示它可以保留值的时间周期。在生存期内变量的值可以更改,但变量总是保留某些 值。
C#编程(二十)----------静态类的更多相关文章
- Unix环境高级编程(二十)伪终端
1.综述 伪终端对于一个应用程序而言,看上去像一个终端,但事实上伪终端并不是一个真正的终端.从内核角度看,伪终端看起来像一个双向管道,而事实上Solaris的伪终端就是用STREAMS构建的.伪终端总 ...
- 学习ASP.NET Core Razor 编程系列十四——文件上传功能(二)
学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...
- 学习ASP.NET Core Razor 编程系列十二——在页面中增加校验
学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...
- WCF学习之旅—实现支持REST客户端应用(二十四)
WCF学习之旅—实现REST服务(二十二) WCF学习之旅—实现支持REST服务端应用(二十三) 在上二篇文章中简单介绍了一下RestFul与WCF支持RestFul所提供的方法,及创建一个支持RES ...
- 【原创】高性能网络编程(二):上一个10年,著名的C10K并发连接问题
1.前言 对于高性能即时通讯技术(或者说互联网编程)比较关注的开发者,对C10K问题(即单机1万个并发连接问题)应该都有所了解."C10K"概念最早由Dan Kegel发布于其个人 ...
- 二十六、Jcreator使用初步
摘自http://blog.csdn.net/liujun13579/article/details/7751464 二十六.Jcreator使用初步 Jcreator是一个小巧灵活的Java开发工具 ...
- WCF技术剖析之二十五: 元数据(Metadata)架构体系全景展现[元数据描述篇]
原文:WCF技术剖析之二十五: 元数据(Metadata)架构体系全景展现[元数据描述篇] 在[WS标准篇]中我花了很大的篇幅介绍了WS-MEX以及与它相关的WS规范:WS-Policy.WS-Tra ...
- WCF技术剖析之二十二: 深入剖析WCF底层异常处理框架实现原理[中篇]
原文:WCF技术剖析之二十二: 深入剖析WCF底层异常处理框架实现原理[中篇] 在[上篇]中,我们分别站在消息交换和编程的角度介绍了SOAP Fault和FaultException异常.在服务执行过 ...
- Android进阶(二十)AndroidAPP开发问题汇总(四)
· Android进阶(二十)AndroidAPP开发问题汇总(四) android:layout_width和android:width的区别 基中的android:layout_width和and ...
- SpringBoot进阶教程(二十九)整合Redis 发布订阅
SUBSCRIBE, UNSUBSCRIBE 和 PUBLISH 实现了 发布/订阅消息范例,发送者 (publishers) 不用编程就可以向特定的接受者发送消息 (subscribers). Ra ...
随机推荐
- Linux 黑白界面显示
2014年1月14日 15:47:47 不知道别人怎么看,反正我觉得黑白配显示很方便阅读 命令: ls 脚本: ~/.bashrc 指令: alias ls='ls --color=never' 命令 ...
- iis6 和iis7s上整个网站重定向
iis6 和iis7s上整个网站重定向 重定向作用: 重定向(Redirect)就是通过各种方法将各种网络请求重新定个方向转到其它位置.举例说明:就像我XX公司,之前用的网络域名是“www.bb. ...
- window10 显示QQ图标
- PhoneGap学习地址 / PhoneGap API介绍:Events
http://blog.csdn.net/phonegapcn 事件类型: backbutton deviceready menubutton pause resume searchbutton on ...
- 【PAT】1091 Acute Stroke(30 分)
1091 Acute Stroke(30 分) One important factor to identify acute stroke (急性脑卒中) is the volume of the s ...
- tail -f 与 tail -F的区别
使用tail -f监控某个文件,将在另一个窗口将该文件删除后,然后再新创建,那么我们会发现tail -f的监制失效了.而使用tail -F会再次进行监控.
- 2017, X Samara Regional Intercollegiate Programming Contest 题解
[题目链接] A - Streets of Working Lanterns - 2 首先将每一个括号匹配串进行一次缩减,即串内能匹配掉的就匹配掉,每个串会变成连续的$y$个右括号+连续$z$个左括号 ...
- 阿里云服务器(windows)配置项目域名
一.数据库是放在阿里云上!二.项目部署到服务器上,tomcat会一直运行(除非你手动停止)三.设置域名及tomcat配置(1)在阿里云控制台上的域名解析设置中添加记录,将域名映射到你的阿里云esc公网 ...
- 002.Git日常基础使用
一 获取git仓库 1.1 初始化仓库 [root@git ~]# cd /mystudy/ [root@git mystudy]# git init [root@git mystudy]# git ...
- 001.FTP简介及相关文件
一 FTP简介 FTP(File Transfer Protocol)文件传输协议,用于Internet上控制文件的双向传输. 下载:远程主机拷贝文件至本地: 上传:本地主机拷贝文件至远程. 二 FT ...