C# 中 static 的用法
说明1:
表示静态的关键字
说明此对象在应用中只存在一份
说明2:
C# 是面向对象的程序设计语言,每一个函数都属于一个类。
当
一个方法被声明为Static时,这个方法是一个静态方法,编译器会在编译时保留这个方法的实现。也就是说,这个方法属于类,但是不属于任何成员,不管这
个类的实例是否存在,它们都会存在。就像入口函数Static void Main,因为它是静态函数,所以可以直接被调用。
当一个方法被声明为Virtual时,它是一个虚拟方法,直到你使用ClassName variable = new ClassName();声明一个类的实例之前,它都不存在于真实的内存空间中。这个关键字在类的继承中非常常用,用来提供类方法的多态性支持。
例如,有一个类Test,Test类拥有两个方法Hello()和greet(): 
public class test 
{ 
  public void Hello() 
  { 
    System.Console.WriteLine("hello, world!"); 
   } 
      ..... 
} 
类TestMe派生自类Test,那么当你使用如下的代码: 
Test a = new TestMe(); 
创建一个TestMe类的新实例后,假如你试图执行如下的代码: 
a.Hello(); 
那么,自然就会运行基类Test的Hello()方法,但是如果你想给予派生类TestMe一个它自己的Hello()方法,你就要在Test类中将Hello()方法声明为虚拟的: 
public virtual void Hello() 
{ 
  ... 
} 
然后在派生类中以override关键字表示覆盖基类的方法: 
public class TestMe : Test 
{ 
...
  public overrice void Hello() 
  { 
    System.Console.WriteLine("hello from TestMe class!!!"); 
  }
      .... 
} 
这时调用a.Hello(),就会出现“hello from TestMe class!!!”字样,而不是“Hello,world!”说明基类的方法已经被覆盖了。这就是多态性的表现。
从上面不难看出,一个静态的方法是真实存在的,而一个虚拟方法可以被派生类重写,这二者是冲突的,其实对于一个方法,C#规定只能使用下面这些限定符中的一个: 
override virtual static abstract sealed 
代表的含义分别为: 
重载函数、虚拟函数、静态函数、抽象函数、密封函数(不可派生)
另外,C#中定义一个方法的声明为:
可见性 类型 返回值 方法名(参数列表){方法体}
例如 
public static void Test(int a){System.Console.WriteLine(a.ToString());}
这是一个公有的静态函数,函数名为Test,无返回值,有一个整形参数a,作用是把a的值输出在屏幕上。
C# 中 static 的用法的更多相关文章
- Java中static的用法
		
static静态,作为修饰符,最初是由c引入,一开始static表示退出一个块后依然存在的局部变量.随后,static表示不能被其他文件访问的全局变量和函数.到了C++和java,static表示属于 ...
 - C/C++中static的用法全局变量与局部变量
		
1.什么是static? static 是C/C++中很常用的修饰符,它被用来控制变量的存储方式和可见性. 1.1static的引入 我们知道在函数内部定义的变量,当程序执行到它的定义处时,编译器为它 ...
 - Java中static的用法,初始化块
		
使用 Arrays 类操作 Java 中的数组语法: Arrays.sort(数组名); 可以使用 sort( ) 方法实现对数组的排序,只要将数组名放在 sort( ) 方法的括号中,就可以完成对该 ...
 - Java类中static的用法
		
关于Java中static的使用有以下四种情况: 1.静态成员变量 被static修饰的成员变量,叫静态成员变量或类变量:没有被static修饰的变量,叫实例变量. 两者的区别是: ...
 - c++中static的用法详解
		
C 语言的 static 关键字有三种(具体来说是两种)用途: 1. 静态局部变量:用于函数体内部修饰变量,这种变量的生存期长于该函数. int foo(){ static int i = 1; // ...
 - Java中static的用法解析
		
知识点1.static关键字a.可以修饰变量,方法,代码块b.修饰的变量和方法可以使用类名.变量名/类名.方法名调用c.static修饰的资源为静态资源,在类加载的时候执行d.在静态方法中只能调用静态 ...
 - 【转】Java中static关键字用法总结
		
1. 静态方法 通常,在一个类中定义一个方法为static,那就是说,无需本类的对象即可调用此方法 声明为static的方法有以下几条限制: · 它们仅能调用其他的static 方法. · 它 ...
 - 【java_需阅读】Java中static关键字用法总结
		
1. 静态方法 通常,在一个类中定义一个方法为static,那就是说,无需本类的对象即可调用此方法 声明为static的方法有以下几条限制: · 它们仅能调用其他的static 方法. · 它 ...
 - Java中static关键字用法总结
		
1. 静态方法 通常,在一个类中定义一个方法为static,那就是说,无需本类的对象即可调用此方法 声明为static的方法有以下几条限制: · 它们仅能调用其他的static 方法. · ...
 
随机推荐
- Generate the Jobs script from msdb Database
			
前两周,由于数据库简繁体的转换,大量的数据库需要转到新的服务器. 在转其中的一台的时候,原先导出来的JOBS脚本不翼而飞(原因至今未明),而恰巧这一台服务器有90多个JOB(看下图恢复后的,注意滚动条 ...
 - Slony-I 文摘
			
http://www.onlamp.com/pub/a/onlamp/2004/11/18/slony.html 我特别喜欢这篇文章,就进行了转载和翻译. Introducing Slony by ...
 - PostgreSQL中的数组与Any
			
建立表: CREATE TABLE sal_emp ( name text, pay_by_quarter integer[], schedule text[][] ); 插入数据: INSERT I ...
 - C++学习笔记之this指针
			
为了说明这个问题,首先来建立一个简单的类 #include <iostream> #include <string> using namespace std; class Bo ...
 - BZOJ 1061: [Noi2008]志愿者招募 费用流
			
1061: [Noi2008]志愿者招募 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=1061 Description 申奥成功后,布布 ...
 - cdoj 80 Cube 水题
			
Cube Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/problem/show/80 Descrip ...
 - STL源码学习----lower_bound和upper_bound算法[转]
			
STL中的每个算法都非常精妙,接下来的几天我想集中学习一下STL中的算法. ForwardIter lower_bound(ForwardIter first, ForwardIter last,co ...
 - PHP对大小写敏感问题的处理比较乱,写代码时可能偶尔出问题,所以这里总结一下。以便用到的出现错误
			
推荐大家始终坚持“大小写敏感”,遵循统一的代码规范. 1. 变量名区分大小写 1 <?php 2 $abc = 'abcd'; 3 echo $abc; //输出 'abcd' 4 echo $ ...
 - Java虚拟机的启动与程序的执行
			
这篇文章是从 OpenJDK 源码的角度讲当我们执行了 java -classpath . hello 之后,java.exe 怎样从 main 函数開始运行,启动虚拟机,并运行字节码中的代码. 实验 ...
 - h5-5 canvas
			
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...