日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
C#賦值運算符之簡單賦值運算符

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

成都創(chuàng)新互聯(lián)公司長期為上千家客戶提供的網(wǎng)站建設服務,團隊從業(yè)經(jīng)驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為宿豫企業(yè)提供專業(yè)的做網(wǎng)站、成都做網(wǎng)站,宿豫網(wǎng)站改版等技術(shù)服務。擁有10余年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。

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

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

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

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

如果 x 屬于變量:

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

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

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

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

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

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

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

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

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

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

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

當“結(jié)構(gòu)類型”中聲明的屬性或索引器是賦值的目標時,與屬性或索引器訪問關聯(lián)的實例表達式必須為變量類別。如果該實例表達式歸類為值類別,則發(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#賦值運算符之簡單賦值運算符的基本情況就向你介紹到這里,希望對你學習C#賦值運算符之簡單賦值運算符有所幫助。


分享標題:C#賦值運算符之簡單賦值運算符
轉(zhuǎn)載源于:http://www.5511xx.com/article/dhecpdp.html