成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

C#賦值運算符之簡單賦值運算符

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

C#賦值運算符之簡單賦值運算符的概念:

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

簡單賦值表達式的結果是賦予左操作數的值。結果的類型與左操作數相同,且始終為值類別。

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

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

如果 x 屬于變量:

計算 x 以產生變量。

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

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

y 的計算和轉換后所產生的值存儲在 x 的計算所確定的位置中。

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

計算與 x 關聯的實例表達式(如果 x 不是 static)和參數列表(如果 x 是索引器訪問),結果用于后面的對 set 訪問器調用。

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

調用 x 的 set 訪問器,并將 y 的上述結果值作為該訪問器的 value 參數。

C#賦值運算符之簡單賦值運算符的使用:

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

  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 

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

當“結構類型”中聲明的屬性或索引器是賦值的目標時,與屬性或索引器訪問關聯的實例表達式必須為變量類別。如果該實例表達式歸類為值類別,則發生編譯時錯誤。

給定下列聲明:

  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#賦值運算符之簡單賦值運算符的基本情況就向你介紹到這里,希望對你學習C#賦值運算符之簡單賦值運算符有所幫助。

【編輯推薦】

  1. C#運算符優先級介紹
  2. C#關系運算符簡介
  3. C#邏輯運算符簡介
  4. C#條件運算符簡介
  5. C#移位運算符簡介
責任編輯:仲衡 來源: 百度空間
相關推薦

2009-08-12 15:20:18

C#賦值運算符復合賦值運算符

2009-08-11 15:51:08

C#運算符算術運算符

2025-02-24 11:16:20

2011-07-15 01:34:36

C++重載運算符

2009-09-01 10:08:57

C#運算符

2009-08-12 09:30:10

C#??運算符

2025-03-05 09:37:03

2009-08-12 14:49:33

C#移位運算符

2009-08-11 14:16:38

C# New運算符

2009-08-12 13:35:22

C#關系運算符

2009-08-12 14:29:32

C#條件運算符

2009-08-12 10:47:03

C#運算符重載

2020-10-15 08:11:56

JavaScript邏輯運算符

2009-08-12 14:23:09

C#邏輯運算符

2009-09-04 13:18:10

C#允許運算符重載

2009-08-14 10:16:57

C#運算符重載

2009-08-12 10:07:51

C#運算符

2009-08-12 10:27:12

C#運算符重載運算符重載實例

2009-08-12 10:56:47

C#運算符重載C#運算符重載實例

2009-08-12 13:07:13

C#運算符優先級
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 成年人免费看的视频 | 99久久99久久精品国产片果冰 | 伊人网综合在线 | 久久精品高清视频 | 91久久久www播放日本观看 | 天天插天天舔 | 国产成人啪免费观看软件 | 国产精品久久久久久久久久 | 久久aⅴ乱码一区二区三区 亚洲国产成人精品久久久国产成人一区 | 免费一级片 | wwwsihu| 久久久国产一区二区三区 | 久久精品色欧美aⅴ一区二区 | 精品精品视频 | 黑人久久久| 久热中文字幕 | 日本一区二区三区四区 | 毛片电影| 成人超碰 | 韩日精品一区 | 久久一区视频 | 国产japanhdxxxx麻豆 | 中文字幕av色 | 亚洲国产精品一区二区久久 | 精品免费 | 国产视频二区在线观看 | 在线看片国产精品 | 人人做人人澡人人爽欧美 | 久久一区二区av | 看一级黄色毛片 | 精品一二区 | 91xxx在线观看 | 青青久草 | 中文字幕日韩三级 | 中文字幕一区二区三区四区 | 粉嫩高清一区二区三区 | 精品视频亚洲 | 精品视频在线观看 | 91小视频在线| 在线国产一区 | 91九色porny首页最多播放 |