转:C#: static关键字的作用
tatic意思是静态,可以修饰类、字段、属性、方法
标记为static的就不用创建实例对象调用了,可以通过类名直接点出来
static三种用法:
1.用于变量前,表示每次重新使用该变量所在方法、类或自定义类时,变量的值为程序这次运行最后一次为变量赋值时的值,这个方法称为静态函数:
private void s()
{
static int a=1;
a++;
}
方法第一次调用结束后a在内存内值为2;
方法第一次调用结束后a在内存内值为3;
2.在方法(函数)前用static修饰,表示此方法为所在类或所在自定义类所有,而不是这个类的实例所有,这个方法称为静态方法:
情况一:非静态方法:
class t
{
t(....(参数,下面同))
{
~~~~(方法内容,下面同)
}
void s(....)
{
~~~~
}
}
当你在其他方法里调用这个类中的方法s,则需先声明这个类的变量如:t sd = new t(....);
再在t里调用方法:sd.s(....);
情况2:静态方法:
class t
{
t(....(参数,下面同))
{
~~~~(方法内容,下面同)
}
static void s(....)
{
~~~~
}
}
当你在其他方法里调用这个类中的方法s,则不用先声明这个类的变量如直接调用方法:t.s(....);
呵呵,这个就要看你的具体需求了,我们知道凡是在变量、方法、类前声明了static关键字后,他们就是全局的了,
好处就是,你不需要每次在使用些方法的时候频繁使用坑爹的new关键字了(说实话,这真的很麻烦)。
还有就是考虑系统资源的安全性,打个比方吧,员工类,一个公司咱需要很多员工吧,咱就可以new出无数个员工,但是部门领导最好是static的,那样就防止new出很多领导啦!
3.用于class前,说明此类型无法新建实例,简单点说这个类型的方法全是静态方法,这个类里的非静态方法是不能使用的,这个类型称为静态类.
比如C#控制台操作的Cancle类里面的成员就被标记为静态的,可以直接用Concle.直接点出来使用。
如果没有标记为静态就要通过创建实例对象来调用,比如说动态字符串StringBuilder就要new一个实例来调用
StringBuilder sb =new StringBuilder();
sb.xxx(); //xxx是方法名
static class t
{
~~~~
}
~~~~
class d
{
~~~~
void f(....)
{
~~~~
t v = new t();//此时程序会出现错误
}
}
Tips:
整个类型在程序运行期间只加载一次。 这样是对于那些经常使用的类型来说的, 那就不用每次使用前都先加载。效率高些。
但是对那些不常用的类型来说,如果是静态类型,那就要一直占用相当的内存;一直到程序停止。或者应用程序域被卸 载。所以应该只对那些常用的类型定义成静态类型。
转:C#: static关键字的作用的更多相关文章
- C#: static关键字的作用(转)
C#: static关键字的作用 static意思是静态,可以修饰类.字段.属性.方法 标记为static的就不用创建实例对象调用了,可以通过类名直接点出来 static三种用法: 1.用于变量前 ...
- java中static关键字的作用
java中static关键字主要有两种作用: 第一:为某特定数据类型或对象分配单一的存储空间,而与创建对象的个数无关. 第二,实现某个方法或属性与类而不是对象关联在一起 简单来说,在Java语言中,s ...
- 【转载】Static 关键字的作用
原始日期:2016-07-16 17:53 一 普通的static关键字 1. 静态全局变量 在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量.我们先举一个静态全局变 ...
- static 关键字的作用
在C语言中,关键字static有三个明显的作用: 1)在函数体内,一个被声明为静态的变量在这一函数被调用过程中维持其值不变(该变量存放在静态变量区). 2) 在模块内(但在函数体外),一个被声明为静态 ...
- static关键字的作用是什么?
static的作用:常用来修饰变量. 全局变量被static修饰后,就称之为静态全局变量:局部变量被static修饰后,就称之为静态局部变量.统称为静态变量. 如果需要进一步解释下面的现象,可以了解i ...
- Static关键字的作用及使用
1.使用static声明属性 如果希望一个属性被所有对象共同拥有,可以将其声明为static类型. 声明为static类型的属性或方法,此属性或方法也被称为类方法,可以由类名直接调用. class P ...
- C#学习笔记随笔(1)----C#中static关键字的作用
静态分配的,有两种情况: 1. 用在类里的属性.方法前面,这样的静态属性与方法不需要创建实例就能访问, 通过类名或对象名都能访问它,静态属性.方法只有“一份”:即如果一个类新建有N个 对象,这N 个对 ...
- static关键字的作用(修饰类、方法、变量、静态块)
1. static修饰的类只能为内部类,普通类无法用static关键字修饰.static修饰的内部类相当于一个普通的类,访问方式为(new 外部类名.内部类的方法() ).如下所示: public c ...
- C语言中static关键字的作用
static的作用(精辟分析) 在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条. (1)先来介绍它的第一条也是最重要的一条:隐藏. 当我们同时编译多个文件时,所有未加sta ...
随机推荐
- C# 类属性封装、字段的详解
今日敲代码时,突然感觉对类的属性封装.字段有点犯迷糊了..连基础的都不知道了,那敲的代码怎么能严谨高效的.果断拿起各种高级编程.大全啥的翻起来~~这不再把自己的理解写下来(定义都是直接抄书的),献给同 ...
- 【.Net Remoting-1】
[.NetRemoting]2015.09.16 [分布式应用程序] 应用程序分布在不同计算机上,通过网络来共同完成一项任务 C/S架构[模式] [互操作性,Interoperability]又称[互 ...
- CDZSC_2015寒假新人(2)——数学 G
G - G Time Limit:3000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Status ...
- [Leetcode] Two Sum (C++)
我在Github上新建了一个解答Leetcode问题的Project, 大家可以参考, 目前是Java 为主,里面有leetcode上的题目,解答,还有一些基本的单元测试,方便大家起步. 题目: Gi ...
- Lenovo Y430P安装Linux无线网卡
新买了一台Lenovo Y430P的笔记本,笔记本自带的无线网卡型号是BCM43142.安装了CentOS6.5的操作系统后,按照网上搜索到的网址http://zh-cn.broadcom.com/s ...
- Java的反射机制及应用实例
一:什么是反射机制 简单的来说,反射机制指的是程序在运行时能够获取自身的信息.在Java中,只要给定类的名字,那么就可以通过反射机制来获得类的所有信息. 二:哪里用到反射机制 我们用过一些知识,但是并 ...
- Java 枚举随笔
public enum Color{ //定义枚举并赋值 RED("红色", 1), Blue("蓝色", 2), Yellow("黄色", ...
- shell脚本练习(autocert)
#!/bin/bash#By Spinestars#20131118 #name:ca_cert#certficate ca cd /etc/pki/CA/auto num=$RANDOM mv ./ ...
- linux软件安装(rpm,源码编译)
1.rpm(redhat package manager)管理器主要目的在于解决软件的安装.卸载.升级.查询.验证等,例如升级过程中,保留软件的配置文件,安装过程中,检查软件依赖的库文件,以及卸载过程 ...
- MVC 中使用uploadify上传图片遇到的蛋疼问题
MVC 中使用uploadify上传图片遇到的蛋疼问题 初次使用uploadify上传图片,遇到了一些比较纠结的问题,在这里和大家分享下,有不对的地方还望大神多多指教,希望对刚接触的朋友有所帮助,文采 ...