自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

C#賦值運(yùn)算符之簡單賦值運(yùn)算符

開發(fā) 后端
C#賦值運(yùn)算符之簡單賦值運(yùn)算符是指什么呢?C#賦值運(yùn)算符之簡單賦值運(yùn)算符的使用又是什么情況呢?那么本文就向你介紹具體的內(nèi)容。

C#賦值運(yùn)算符之簡單賦值運(yùn)算符的概念:

= 運(yùn)算符稱為簡單賦值運(yùn)算符。在簡單賦值中,右操作數(shù)表達(dá)式所屬的類型必須可隱式地轉(zhuǎn)換為左操作數(shù)所屬的類型。運(yùn)算將右操作數(shù)的值賦予左操作數(shù)指定的變量、屬性或索引器元素。

簡單賦值表達(dá)式的結(jié)果是賦予左操作數(shù)的值。結(jié)果的類型與左操作數(shù)相同,且始終為值類別。

如果左操作數(shù)為屬性或索引器訪問,則該屬性或索引器必須具有 set 訪問器。如果不是這樣,則發(fā)生編譯時錯誤。

x = y 形式的簡單賦值的運(yùn)行時處理包括以下步驟:

如果 x 屬于變量:

計算 x 以產(chǎn)生變量。

如果要求,則計算 y,必要時還需通過隱式轉(zhuǎn)換將其轉(zhuǎn)換為 x 的類型。

如果 x 給定的變量是引用類型的數(shù)組元素,則執(zhí)行運(yùn)行時檢查以確保為 y 計算的值與以 x 為其元素的那個數(shù)組實例兼容。如果 y 為 null,或存在從 y 引用的實例的實際類型到包含 x 的數(shù)組實例的實際元素類型的隱式引用轉(zhuǎn)換,則檢查成功。否則,引發(fā) System.ArrayTypeMismatchException。

y 的計算和轉(zhuǎn)換后所產(chǎn)生的值存儲在 x 的計算所確定的位置中。

如果 x 屬于屬性或索引器訪問:

計算與 x 關(guān)聯(lián)的實例表達(dá)式(如果 x 不是 static)和參數(shù)列表(如果 x 是索引器訪問),結(jié)果用于后面的對 set 訪問器調(diào)用。

計算 y,必要時還需通過隱式轉(zhuǎn)換將其轉(zhuǎn)換為 x 的類型。

調(diào)用 x 的 set 訪問器,并將 y 的上述結(jié)果值作為該訪問器的 value 參數(shù)。

C#賦值運(yùn)算符之簡單賦值運(yùn)算符的使用:

如果存在從 B 到 A 的隱式引用轉(zhuǎn)換,則數(shù)組協(xié)方差規(guī)則允許數(shù)組類型 A[] 的值成為對數(shù)組類型 B[] 的實例的引用。由于這些規(guī)則,對引用類型的數(shù)組元素的賦值需要運(yùn)行時檢查以確保所賦的值與數(shù)組實例兼容。在下面的示例中,

  1. string[] sa = new string[10];  
  2. object[] oa = sa;  
  3. oa[0] = null;               // Ok  
  4. oa[1] = "Hello";            // Ok  
  5. oa[2] = new ArrayList();   // ArrayTypeMismatchException 

最后的賦值導(dǎo)致引發(fā) System.ArrayTypeMismatchException,這是因為 ArrayList 的實例不能存儲在 string[] 的元素中。

當(dāng)“結(jié)構(gòu)類型”中聲明的屬性或索引器是賦值的目標(biāo)時,與屬性或索引器訪問關(guān)聯(lián)的實例表達(dá)式必須為變量類別。如果該實例表達(dá)式歸類為值類別,則發(fā)生編譯時錯誤。

給定下列聲明:

  1. struct Point  
  2. {  
  3.    int x, y;  
  4.    public Point(int x, int y) {  
  5.       this.x = x;  
  6.       this.y = y;  
  7.    }  
  8.    public int X {  
  9.       get { return x; }  
  10.       set { x = value; }  
  11.    }  
  12.    public int Y {  
  13.       get { return y; }  
  14.       set { y = value; }  
  15.    }  
  16. }  
  17. struct Rectangle  
  18. {  
  19.    Point a, b;  
  20.    public Rectangle(Point a, Point b) {  
  21.       this.a = a;  
  22.       this.b = b;  
  23.    }  
  24.    public Point A {  
  25.       get { return a; }  
  26.       set { a = value; }  
  27.    }  
  28.    public Point B {  
  29.       get { return b; }  
  30.       set { b = value; }  
  31.    }  

在下面的示例中,

  1. Point p = new Point();  
  2. p.X = 100;  
  3. p.Y = 100;  
  4. Rectangle r = new Rectangle();  
  5. r.A = new Point(10, 10);  
  6. r.B = p; 

由于 p 和 r 為變量,因此允許對 p.X、p.Y、r.A 和 r.B 賦值。但是,在以下示例中

  1. Rectangle r = new Rectangle();  
  2. r.A.X = 10;  
  3. r.A.Y = 10;  
  4. r.B.X = 100;  
  5. r.B.Y = 100; 

由于 r.A 和 r.B 不是變量,所以賦值全部無效。

C#賦值運(yùn)算符之簡單賦值運(yùn)算符的基本情況就向你介紹到這里,希望對你學(xué)習(xí)C#賦值運(yùn)算符之簡單賦值運(yùn)算符有所幫助。

【編輯推薦】

  1. C#運(yùn)算符優(yōu)先級介紹
  2. C#關(guān)系運(yùn)算符簡介
  3. C#邏輯運(yùn)算符簡介
  4. C#條件運(yùn)算符簡介
  5. C#移位運(yùn)算符簡介
責(zé)任編輯:仲衡 來源: 百度空間
相關(guān)推薦

2009-08-12 15:20:18

C#賦值運(yùn)算符復(fù)合賦值運(yùn)算符

2009-08-11 15:51:08

C#運(yùn)算符算術(shù)運(yùn)算符

2025-02-24 11:16:20

2011-07-15 01:34:36

C++重載運(yùn)算符

2009-09-01 10:08:57

C#運(yùn)算符

2009-08-12 09:30:10

C#??運(yùn)算符

2025-03-05 09:37:03

2009-08-11 14:16:38

C# New運(yùn)算符

2009-08-12 13:35:22

C#關(guān)系運(yùn)算符

2009-08-12 14:29:32

C#條件運(yùn)算符

2009-08-12 10:47:03

C#運(yùn)算符重載

2009-08-12 14:49:33

C#移位運(yùn)算符

2020-10-15 08:11:56

JavaScript邏輯運(yùn)算符

2009-09-04 13:18:10

C#允許運(yùn)算符重載

2009-08-12 10:27:12

C#運(yùn)算符重載運(yùn)算符重載實例

2009-08-12 10:07:51

C#運(yùn)算符

2009-08-14 10:16:57

C#運(yùn)算符重載

2009-08-12 10:56:47

C#運(yùn)算符重載C#運(yùn)算符重載實例

2009-08-12 14:23:09

C#邏輯運(yùn)算符

2009-08-12 12:46:11

C#運(yùn)算符重載
點贊
收藏

51CTO技術(shù)棧公眾號