C# 類(lèi)型

2018-01-16 00:08 更新

C#類(lèi)型

類(lèi)型定義值的藍(lán)圖。有不同的操作與不同類(lèi)型相關(guān)聯(lián)。

在下面的示例中,我們使用兩個(gè)類(lèi)型為int的常量,值為2 3。


static void Main() {
   int x = 2 * 3;
   Console.WriteLine (x); 
} 

int 是一個(gè)表示整數(shù)值的構(gòu)建類(lèi)型。

C#也定義類(lèi)型,如long,string,byte ...

變量

我們?cè)谏厦娴拇a中聲明了一個(gè)類(lèi)型為 int 的變量,其名稱為 x 。

變量表示可以包含不同值的內(nèi)存位置。我們可以為變量賦予不同的值。

相反,常數(shù)總是表示相同的值:


const int y = 6; 

相反,常數(shù)總是表示相同的值:

C#中的所有值都是類(lèi)型的實(shí)例。


預(yù)定義類(lèi)型示例

預(yù)定義類(lèi)型是編譯器支持的類(lèi)型。

上面示例中的int類(lèi)型是用于表示整數(shù)集合的預(yù)定義類(lèi)型,從-231到231-1。

我們可以執(zhí)行函數(shù),如與int類(lèi)型的實(shí)例的算術(shù)如下:


int x = 2 * 3; 

C#有其他類(lèi)型。C#type string 表示一個(gè)序列字符,如“.NET"。

我們可以通過(guò)調(diào)用函數(shù)來(lái)處理字符串,如下所示:


string message = "Hello world"; 
string upperMessage = message.ToUpper(); 
Console.WriteLine (upperMessage); 

上面的代碼生成以下結(jié)果。


int x = 2; 
message = message + x.ToString(); 
Console.WriteLine (message); 

上面的代碼生成以下結(jié)果。



值類(lèi)型與引用類(lèi)型

所有C#類(lèi)型分為以下類(lèi)別:

  • 值類(lèi)型
  • 引用類(lèi)型
  • 通用類(lèi)型參數(shù)
  • 指針類(lèi)型

值類(lèi)型包括大多數(shù)內(nèi)置類(lèi)型,例如,int,long,bool以及自定義結(jié)構(gòu)和枚舉類(lèi)型。

引用類(lèi)型包括所有類(lèi),數(shù)組,委托和接口類(lèi)型。它還包括預(yù)定義的 string 類(lèi)型。

值類(lèi)型

值類(lèi)型變量或常量的內(nèi)容是一個(gè)值。

我們可以使用 struct 關(guān)鍵字定義一個(gè)自定義值類(lèi)型:


public struct Point { 
    public int X, Y; 
} 

值類(lèi)型實(shí)例的分配始終會(huì)復(fù)制實(shí)例。

例如:


static void Main() { 
    Point p1 = new Point(); 
    p1.X = 1;
    Point p2 = p1; // Assignment causes copy

    Console.WriteLine (p1.X); // 1 
    Console.WriteLine (p2.X); // 1

    p1.X = 2; // Change p1.X

    Console.WriteLine (p1.X); // 2 
    Console.WriteLine (p2.X); // 1 
} 

引用類(lèi)型

引用類(lèi)型有兩部分:一個(gè)對(duì)象和對(duì)該對(duì)象的引用。

引用類(lèi)型變量的內(nèi)容是對(duì)包含該值的對(duì)象的引用。

這里是作為類(lèi)重寫(xiě)的Point類(lèi)型:


public class Point { 
   public int X, Y; 
} 

分配引用類(lèi)型變量會(huì)復(fù)制引用,而不是對(duì)象實(shí)例。

這允許多個(gè)變量引用同一個(gè)對(duì)象。


static void Main() { 
    Point p1 = new Point(); 
    p1.X = 1;

    Point p2 = p1; // Copies p1 reference

    Console.WriteLine (p1.X); // 1 
    Console.WriteLine (p2.X); // 1


    p1.X = 2; // Change p1.X

    Console.WriteLine (p1.X); // 2 
    Console.WriteLine (p2.X); // 2 
} 

空值

一個(gè)引用可以分配常量null,表示引用指向沒(méi)有對(duì)象:


class Point {...} 

Point p = null; 
Console.WriteLine (p == null); // True 

值類(lèi)型通常不能為null值:

預(yù)定義類(lèi)型分類(lèi)法

C#中的預(yù)定義類(lèi)型有:

  • 值類(lèi)型
    • 數(shù)字
    • 有符號(hào)整數(shù) (sbyte, short, int, long)
    • 無(wú)符號(hào)整數(shù) (byte, ushort, uint, ulong)
    • 實(shí)數(shù) (float, double, decimal)
    • 邏輯 (bool)
    • 字符 (char)
  • 引用類(lèi)型
    • String (string)
    • Object (object)

C#別名中的預(yù)定義類(lèi)型System命名空間中的框架類(lèi)型。

這兩個(gè)語(yǔ)句之間只有語(yǔ)法上的區(qū)別:


int i = 5; 
System.Int32 i = 5; 
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)