靜態成員和非靜態成員的區別?

作者: Clark Zheng  發布時間: 2008-09-04 10:11  閱讀: 24794 次  推薦: 2   原文鏈接   [收藏]  

系列文章導航:

靜態成員和非靜態成員的區別?

const 和 static readonly 區別?

extern 是什么意思?

abstract 是什么意思?

internal 修飾符起什么作用?

sealed 修飾符是干什么的?

override 和 overload 的區別?

什么是索引指示器?

new 修飾符是起什么作用?

this 關鍵字的含義?

可以使用抽象函數重寫基類中的虛函數嗎?

C#基礎概念之密封類,屬性訪問器,接口

類和結構的區別?

C#基礎概念之抽象類,接口,接口多繼承

別名指示符是什么?

如何手工釋放資源?

C#基礎概念之P/Invoke,StringBuilder 和 String

explicit 和 implicit 的含義?

params 有什么用?

什么是反射?

 

1.靜態成員和非靜態成員的區別?

答:

靜態變量使用 static 修飾符進行聲明,在類被實例化時創建,通過類進行訪問不帶有 static 修飾符聲明的變量稱做非靜態變量,在對象被實例化時創建,通過對象進行訪問一個類的所有實例的同一靜態變量都是同一個值,同一個類的不同實例的同一非靜態變量可以是不同的值。靜態函數的實現里不能使用非靜態成員,如非靜態變量、非靜態函數等。

示例:

 

Code
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();        
        }    
    }
}

結果:
Class1's staticStr: Class
tmpObj1's notstaticStr: tmpObj1
tmpObj2's notstaticStr: tmpObj2

 

 

2
0
 
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()