首页 > 技术文章 > c#学习系列之字段(静态,常量,只读)

anthow 2013-10-13 22:56 原文

 C#静态变量使用 static 修饰符进行声明,在类被实例化时创建,通过类进行访问不带有 static 修饰符声明的变量称做非静态变量。static变量在对象被实例化时创建,通过对象进行访问一个类的所有实例的同一C#静态变量都是同一个值,同一个类的不同实例的同一非静态变量可以是不同的值。静态函数的实现里不能使用非静态成员,如非静态变量、非静态函数等。

using System;   
     using System.Collections.Generic;  
     using System.Text;   

     namespace Example01  

     {  

        class Program  

        {  

          class Class1   
         {  

                public static String staticStr = "Class";   
                public String notstaticStr = "Obj";  

         }  

         static void Main(string[] args)  

        {  

         //静态变量通过类进行访问,该类所有实例的同一静态变量都是同一个值  

         Console.WriteLine("Class1's staticStr: {0}", Class1.staticStr);   

         Class1 tmpObj1 = new Class1();  

        tmpObj1.notstaticStr = "tmpObj1";  

        Class1 tmpObj2 = new Class1();  

        tmpObj2.notstaticStr = "tmpObj2";   

        //非静态变量通过对象进行访问,不同对象的同一非静态变量可以有不同的值  

        Console.WriteLine("tmpObj1's notstaticStr: {0}", tmpObj1.notstaticStr);  

        Console.WriteLine("tmpObj2's notstaticStr: {0}", tmpObj2.notstaticStr);   

        Console.ReadLine();  

       }  

     }   

输出结果:

常量是隐式的静态变量,所以基本属性和静态变量差不多的。对他们的访问只有是用类才能访问,不能用实例化对象访问的,例如:

int staic a;

class p = new class();

p.a//这样是错误的,只有通过类才能访问的

下面介绍的是只读字段(对其赋值要特别注意):

推荐阅读