C#中static静态变量的用法实例

本文实例讲述了C#中static静态变量的用法。分享给大家供大家参考。具体如下:

使用 static 修饰符声明属于类型本身而不是属于特定对象的静态成员static修饰符可用于类、字段、方法、属性、运算符、事件和构造函数,但不能用于索引器、析构函数或类以外的类型
 
静态全局变量

定义:在全局变量前,加上关键字 static 该变量就被定义成为了一个静态全局变量。

特点:
① 、该变量在全局数据区分配内存。
② 、初始化:如果不显式初始化,那么将被隐式初始化为0。
 
静态局部变量

定义:在局部变量前加上static关键字时,就定义了静态局部变量。
特点:
① 、该变量在全局数据区分配内存。
② 、初始化:如果不显式初始化,那么将被隐式初始化为0。
③ 、它始终驻留在全局数据区,直到程序运行结束。但其作用域为局部作用域,当定义它的函数或 语句块结束时,其作用域随之结束。

静态数据成员

特点:
① 、内存分配:在程序的全局数据区分配。
② 、初始化和定义:
    a、静态数据成员定义时要分配空间,所以不能在类声明中定义。
    b、为了避免在多个使用该类的源文件中,对其重复定义,所在,不能在类的头文件中
    定义。
    c、静态数据成员因为程序一开始运行就必需存在,所以其初始化的最佳位置在类的内部实现。
③ 、特点
    a、对相于 public,protected,private 关键字的影响它和普通数据成员一样,
    b、因为其空间在全局数据区分配,属于所有本类的对象共享,所以,它不属于特定的类对象,在没产生类对象时其作用域就可见,即在没有产生类的实例时,我们就可以操作它。

④ 、访问形式
    a、 类对象名.静态数据成员名
⑤ 、静态数据成员,主要用在类的所有实例都拥有的属性上。比如,对于一个存款类,帐号相对   于每个实例都是不同的,但每个实例的利息是相同的。所以,应该把利息设为存款类的静态数据成员。这有两个好处,第一,不管定义多少个存款类对象,利息数据成员都共享分配在全局区的内存,所以节省存贮空间。第二,一旦利息需要改变时,只要改变一次,则所有存款类对象的利息全改变过来了,因为它们实际上是共用一个东西。

静态成员函数

特点:
  ① 、静态成员函数与类相联系,不与类的对象相联系。
  ② 、静态成员函数不能访问非静态数据成员。原因很简单,非静态数据成员属于特定的类实例。

作用:主要用于对静态数据成员的操作。
调用形式:
  ① 、类对象名.静态成员函数名()
 
static静态变量的实例与分析
实例:

代码如下:

using System;
namespace teststatic
{
    class class1
    {
        static int i = getNum();
        int j = getNum();
        static int num = 1;
        static int getNum()
        {
            return num;
        }
        static void Main(string[] args)
        {
            Console.WriteLine("i={0}",i);
            Console.WriteLine("j={0}", new class1().j);
            Console.Read();
        }
    }
}

现在分析上面的代码:

代码如下:

Console.WriteLine(string.Format("i={0}",i));

这里i是static变量,而且类class1是第一次被引 用,要先为class1里面所有的static变量分配内存。尽管现在有超线程技术,但是指令在逻辑还是一条一条的按顺序执行的,所以 先为static int i分配内存,并且在该内存中保持int的缺省值0,接着再为static int num 变量分配内存,值当然也为0。

然后执行第二步,为变量赋值:先为static int i变量赋值,i=getNum(),看getNum里面的代码,就是return num,这个时候num的值是0,于是i就为0了。然后对变量num赋值,num=1;这行代码执行后,num就为1了。
所以最后的结果为:
i=0 j=1

希望本文所述对大家的C#程序设计有所帮助。

(0)

相关推荐

  • C#类中static变量用法分析

    本文实例讲述了C#类中static变量用法.分享给大家供大家参考.具体分析如下: 先来看一段代码: 复制代码 代码如下: using System; namespace Param { class Class1 { static int i = getNum(); int j = getNum(); static int num = 1; static int getNum() { return num; } [STAThread] static void Main(string[] args)

  • C语言中static的作用及C语言中使用静态函数有何好处

    想了解Java中static关键字的作用和用法详细介绍,请点击此处了解详情. 在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条,分别是: 一是隐藏功能,对于static修饰的函数和全局变量而言 二是保持持久性功能,对于static修饰的局部变量而言. 三是因为存放在静态区,全局和局部的static修饰的变量,都默认初始化为0 下面我逐一给大家介绍: (1)先来介绍它的第一条也是最重要的一条:隐藏. 当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有

  • c语言中static的用法详细示例分析

    static在c里面可以用来修饰变量,也可以用来修饰函数.先看用来修饰变量的时候.变量在c里面可分为存在全局数据区.栈和堆里.其实我们平时所说的堆栈是栈而不是堆,不要弄混. 复制代码 代码如下: int a ;int main(){    int b ;     int c* = (int *)malloc(sizeof(int));} a是全局变量,b是栈变量,c是堆变量.static对全局变量的修饰,可以认为是限制了只能是本文件引用此变量.有的程序是由好多.c文件构成.彼此可以互相引用变量,

  • static关键字的作用详解

    (1)先来介绍它的第一条也是最重要的一条:隐藏. 当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性.为理解这句话,我举例来说明.我们要同时编译两个源文件,一个是a.c,另一个是main.c. 下面是a.c的内容 复制代码 代码如下: char a = 'A'; // global variablevoid msg() {    printf("Hello\n"); } 下面是main.c的内容 复制代码 代码如下: int main(void){   

  • 浅谈static a[n*m]={0};中static的作用

    正如我们知道的,函数内部的一般变量和数组都在栈区开辟内存,但是栈区的内存是有限的,当我们要开辟的内存较大时,编译器会报错,那我们该如何处理呢? 我们又知道,static int a;表示在全局区为变量a分配内存,同理我们在数组前面加上static之后,系统也为该数组在全局区分配内存,全局区的总内存比较大,一般会满足我们的需求. 如题:当n*m比较大时,这就是为什么static a[n*m]={0};必须带着static的原因了. 以上这篇浅谈static a[n*m]={0};中static的作

  • 关于C/C++中static关键字的作用总结

    1.先来介绍它的第一条也是最重要的一条:隐藏.(static函数,static变量均可)当同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性.举例来说明.同时编译两个源文件,一个是a.c,另一个是main.c. 复制代码 代码如下: //a.cchar a = 'A';               // global variablevoid msg(){     printf("Hello\n");} 复制代码 代码如下: //main.c int main

  • C#中static静态变量的用法实例

    本文实例讲述了C#中static静态变量的用法.分享给大家供大家参考.具体如下: 使用 static 修饰符声明属于类型本身而不是属于特定对象的静态成员static修饰符可用于类.字段.方法.属性.运算符.事件和构造函数,但不能用于索引器.析构函数或类以外的类型   静态全局变量 定义:在全局变量前,加上关键字 static 该变量就被定义成为了一个静态全局变量. 特点: ① .该变量在全局数据区分配内存. ② .初始化:如果不显式初始化,那么将被隐式初始化为0.   静态局部变量 定义:在局部

  • php中static 静态变量和普通变量的区别

    php中static 静态变量和普通变量的区别 在变量的前面加上static 就构成了静态变量(static 变量). static变量和普通变量的区别在于非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的. 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不能使用它.由于静态全局变量的作用域局限于一个源文件内,只能为该源文件内的函数公用, 因此可以避免在其它源文件中引起错误. static变

  • Java中static静态变量的初始化完全解析

    静态变量初始化顺序 1.简单规则 首先先看一段最普遍的JAVA代码: public class Test { public static Test1 t = new Test1(); public static int a = 0; public static int b; public static void main(String[] arg) { System.out.println(Test.a); System.out.println(Test.b); } } class Test1

  • php中static静态变量的使用方法详解

    看看下面的实例: 复制代码 代码如下: <?php function Test() { $w3sky = 0; echo $w3sky; $w3sky++; } ?> 本函数每次调用时都会将 $w3sky 的值设为 0 并输出 "0".将变量加一的 $w3sky++ 没有其到效果,因为一旦退出本函数则变量 $w3sky 就不存在了.要写一个不会丢失本次计数值的计数函数,要将变量 $w3sky 定义为静态(static)的: 如下: 复制代码 代码如下: <?php f

  • PHP中abstract(抽象)、final(最终)和static(静态)原理与用法详解

    本文实例讲述了PHP中abstract(抽象).final(最终)和static(静态)原理与用法.分享给大家供大家参考,具体如下: abstract(抽象) PHP 5 支持抽象类和抽象方法.定义为抽象的类不能被实例化.任何一个类,如果它里面至少有一个方法是被声明为抽象的,那么这个类就必须被声明为抽象的.被定义为抽象的方法只是声明了其调用方式(参数),不能定义其具体的功能实现. 继承一个抽象类的时候,子类必须定义父类中的所有抽象方法:另外,这些方法的访问控制必须和父类中一样(或者更为宽松).例

  • php中的静态变量的基本用法

    静态变量只存在于函数作用域内,静态变量只存活在栈中.一般的函数内变量在函数结束后会释放,比如局部变量,但是静态变量却不会.下次再调用这个函数的时候,该变量的值会保留下来. 静态的变量的基本用法 1. 在类中定义静态变量 [访问修饰符] static $变量名; 2. 如何访问静态变量 如果在类中访问 有两种方法 self::$静态变量名 , 类名::$静态变量名 如果在类外访问: 有一种方法 类名::$静态变量名 例子 复制代码 代码如下: class Child{ public $name;

  • 利用反射获取Java类中的静态变量名及变量值的简单实例

    JAVA可以通过反射获取成员变量和静态变量的名称,局部变量就不太可能拿到了. public class Test { public static void main(String[] args) throws Exception { // TODO Auto-generated method stub //获取所有变量的值 Class clazz = Class.forName("com.qianmingxs.ScoreTable"); Field[] fields = clazz.g

  • java中静态导入机制用法实例详解

    java中静态导入机制用法实例详解 这里主要讲解了如何使用Java中静态机制的用法,这里提供了简单实例大家可以参考下. 静态常量类 在java开发中,我们会经常用到一些静态常量用于状态判断等操作.为了能够在多个地方复用这些常量,通常每个模块都会加一个常量类,举个简单的列子: import com.sky.OrderMouleConsstants; /** * Created by gantianxing on 2017/4/21. */ public class Test { public vo

  • php中static和const关键字用法分析

    本文实例讲述了php中static和const关键字用法.分享给大家供大家参考,具体如下: static关键字在类中描述的成员属性和成员函数都是静态的. static成员能限制外部的访问,因为static成员是属于类的,而不是属于任何对象实例. 从内存的角度讲,其中对象是放在"堆内存"中,对象的引用是放在"栈内存"中,而静态成员被放在初始化静态段中,在类的第一次加载的时候加入的.可以让对内存中的所有对象所共享.如下图所示: <?php class Person

  • 详解mysql中的静态变量的作用

    详解mysql中的静态变量的作用 使用静态变量 static variable 示例代码: function Test() { $a = 0; echo $a; $a++; } 本函数没什么用处,因为每次调用时都会将 $a 的值设为 0 并输出 "0".将变量加一的 $a++ 没有作用,因为一旦退出本函数则变量 $a 就不存在了 示例代码: function Test(){ static $a = 0; echo $a; $a++; } 每次调用 Test() 函数都会输出 $a 的值

随机推荐