大家好,我是denylau,今天很鬱悶了,本來整理了好多關於變數的諮詢眼看就要寫完了,電腦出現異常,所有的一切白做了,這個我時候我就納悶了,為什麼blog在發表文章前的寫的這麼多的東西我無法暫存起來呢?一旦瀏覽器出現問題,所有的就是徒勞的額,希望以後的blog能夠增加一個暫存功能,我寫一行點個暫存,及時關閉瀏覽器再次開啟的時候也是可以直接查看的。多好,草稿相對比較麻煩。
好了,下面還是重新的整理下變數吧!
1.變數的概念
變數本身被用來儲存特定類型的資料,可以根據需要隨時改變變數中所儲存的資料值。變數具有名稱,類型和值。
當我們瞭解了變數的概念之後,大家很想知道變數究竟有那幾種呢?那麼在C#中根據變數的定義可以分為兩種:實值型別,參考型別。那麼他們直接存在什麼樣的差異呢?實值型別儲存的是變數本身的資料,而參考型別則儲存實際資料的引用。下面詳細介紹實值型別和參考型別的特性。
實值型別:
·實值型別變數都儲存在堆棧中。
·訪問實值型別變數時,一般都是直接存取其執行個體。
·每個實值型別變數都有自己的資料副本,因此對一個實值型別的變數的操作不會影響其他的變數。
·複製實值型別變數時,複製的是變數的值,而不是變數的地址。
·實值型別變數不能為null,必須具有一個確定的值。
參考型別:
·必須在託管堆中為參考型別變數分配記憶體。
·必須使用new關鍵字來建立參考型別變數。
·在託管堆中分配的每個對象都有與之相關聯的附加成員,這些成員必須被初始化。
·參考型別變數是由記憶體回收機制來管理的。
·多個參考型別變數都可以引用同一個對象,這種情形下,對一個變數的操作會影響另一個變數所引用的同一對象。
·參考型別被賦值之前的值都是null。
那麼我們在編寫程式的過程中經常還會使用到得一個特殊的實值型別是枚舉類型,那麼它有什麼特點呢?
枚舉類型:枚舉類型用於聲明一組具有相同性質的變數,使用枚舉類型可以增加程式的可讀性和可維護性。同時,枚舉類型可以避免類型錯誤,下面呢我通過一個執行個體給大家介紹一下枚舉類型:
using System;
using System.Collections.Generic;
using System.Text;
namespace Test03
{
class Program
{
enum MyDate
{
Sun = 0,
Mon = 1,
Tue = 2,
Wed = 3,
Thi = 4,
Fri = 5,
Sat = 6
}
static void Main(string[] args)
{
int k = (int)DateTime.Now.DayOfWeek;
switch (k)
{
case (int)MyDate.Sun: Console.WriteLine("今天是星期日"); break;
case (int)MyDate.Mon: Console.WriteLine("今天是星期一"); break;
case (int)MyDate.Tue: Console.WriteLine("今天是星期二"); break;
case (int)MyDate.Wed: Console.WriteLine("今天是星期三"); break;
case (int)MyDate.Thi: Console.WriteLine("今天是星期四"); break;
case (int)MyDate.Fri: Console.WriteLine("今天是星期五"); break;
case (int)MyDate.Sat: Console.WriteLine("今天是星期六"); break;
}
Console.ReadLine();
}
}
}
程式首先通過enum關鍵字建立一個枚舉,然後聲明一個int類型的變數K,用於擷取當前表示的日期是星期幾,最後調用switch語句,輸出星期。
既然在C#中資料類型不止一種,或者說有很多種,那麼這些資料類型之間能否進行轉換呢?如果能,它們又有哪些轉換的方式呢?
類型轉換的兩種方式:隱式轉換,顯式轉換
隱藏轉換:就是不需要聲明就能進行的轉換,通俗點就是將較小範圍內的資料類型轉換為較大的範圍的資料類型的操作。
顯式轉換:也就是我們常說的強制轉換,需要在代碼中寫明要轉換的資料類型。通俗說法就是從範圍較大的轉換為較小的資料類型。
那麼在實值型別和參考型別的轉換呢?
這就不得不說到裝箱和拆箱了。
裝箱:講實值型別轉換為參考型別的過程叫做裝箱,是一種特殊的隱式轉換。
拆箱:講參考型別顯示轉換為實值型別,是顯式轉換的一種特殊情形。