C#學習日記20----static靜態變數 與 常量

來源:互聯網
上載者:User
在上一篇 委託(Delegate)類型 中我定義public方法的時候使用了 static 關鍵字,導致後來無法通過 對象.方法名 的形式訪問此方法,這一篇我們就具體學習下 static 靜態變數。

變數:

在學習static靜態變數之前,我們還是有必要來瞭解 變數 的意義。程式要對資料進行讀、寫、運算等操作,當需要儲存特定的值或結果的時候就需要用到變數,在使用者看來,變數是用來描述一條資訊的名稱,在變數中可以儲存各種類型的資訊,比如:人的姓名、車票的價格等等;在電腦看來,變數代表格儲存體地址,變數是什麼類型,變數中儲存的數值就是什麼類型。使用變數的一條重要原則就是 :變數必須先定義後使用。

在C# 中變數的定義與使用規則與C/C++類似,這裡就不多說了,(所以學好C還是挺重要的^_^)

static靜態變數:

帶有 static 修飾符聲明的變數稱為靜態變數,一旦靜態變數所屬的類被裝載直到包含該類的程式運行結束時他將一直存在。static 的主要性質有兩個:

1.隱藏:

    在類裡定義的靜態方法或靜態變數,屬於類本身,而不屬於那個類的一個對象。要想調用一個被定義為static的方法,必須在它前面加上這個類的名稱。(即時是public訪問修飾也不行,這也是上一篇末尾的原因) 執行個體方法必須通過類的執行個體來使用。執行個體方法可以使用類的非靜態成員,也可以使用類的靜態成員。

訪問規則:

 靜態方法只能訪問類的靜態成員,不能訪問類的非靜態成員;
 非靜態方法可以訪問類的靜態成員,也可以訪問類的非靜態成員;
 靜態方法不能使用執行個體來調用,只能使用類名來調用。

比如下面的例子:

class person      {         public static int i;   //定義一個靜態變數i 預設值是0         public int k=0;         //定義一個非靜態變數 k;         public static int sbu()   // 定義一個靜態方法          {             i = 9;  //成功對靜態變數賦值             k = 5;  //出錯了,無法訪問非靜態變數             return k;             //綜上靜態方法只能訪問靜態變數         }          public int Add()  //定義一個執行個體方法          {              i = 9;    //對靜態變數賦值沒有問題              k = 5;    //對非靜態變數賦值也沒問題              return i;              //綜上執行個體方法能夠訪問所有類型變數          }        }

我們執行個體化一個person一個對象對方法進行訪問:

static void Main(string[] args)          {              person per = new person();   //執行個體化一個對象per             int i = per.i;   //出錯了,per訪問不了類裡的靜態變數              int k = per.k; //沒有問題              per.sbu(); //出錯了,per訪問不了靜態方法              person.sbu();  //成功調用              per.Add();   //成功調用              person.Add();  //出錯了,person訪問不了執行個體方法                        }

2.保持變數內容的持久:

儲存在待用資料區的變數會在程式剛開始運行時就完成初始化,也是唯一的一次初始化。共有兩種變數儲存在靜態儲存區:全域變數和static變數,只不過和全域變數比起來,static可以控制變數的可見範圍,說到底static還是用來隱藏的。

寫個例子就知道了(這次我用C++寫了)C#不允許在方法中使用static:

#include<iostream>    using namespace std;    int main()  {     for (int i=0;i<4;i++)     {        static int k =0;   //定義一個靜態變數並賦值為0         k++;        cout<<k<<endl;  //輸出     }         return 0;    }

結果: 

如果上面的代碼中我們去掉 static 此時k=0;變成了非靜態變數,結果只會出現一個數字 1;

常量:

  常量就是其質固定不變的量,從資料類型來看常量的類型可以是任意一種實值型別或參考型別。一個常量的聲明就是聲明程式中要用到的常量名稱和他的值。(用法也與C類似)但是在C#中常量一旦定義無法在改變它的值

using System;  using System.Collections.Generic;  using System.Linq;  using System.Text;    namespace demo  {      class Program      {          const int S = 9;  // 定義一個常量S並賦值          static void Main(string[] args)          {              S += 4;  //出錯了,常量一旦定義就不能改變常量的值             Console.WriteLine(S);          }      }  }

以上就是 C#學習日記20----static靜態變數 與 常量的內容,更多相關內容請關注topic.alibabacloud.com(www.php.cn)!

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.