a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > C# > 正文

Question:基于C#連續賦值的面試題(解答)

2020-01-24 03:20:15
字體:
來源:轉載
供稿:網友
題目在這里:Question:基于C#連續賦值的面試題介紹

在msdn中,對=號操作符的說明如下:
image 
賦值運算符 ( =) 將右操作數的值存儲在左操作數表示的存儲位置、屬性或索引器中,并將值作為結果返回。
操作數的類型必須相同(即右操作數必須可以隱式轉換為左操作數的類型)。
首先來看
int x,y,z;X = y = z = 1;
1:z=1,將1賦值給z,接著返回1,
2:y=(z=1),將返回的1賦值給y,并返回1,
3:x=(y=(z=1)),將表達式2的結果1賦值給x。
接著看第一道題:
const int x=1;short y;object z;z=y=x;

首先要說明的是x是const,因為const是編譯時常量,所以
Z=y=x;在編譯的時候就會變成z=y=1。
1:y=1,因為y是short,所以1被轉換為short,所以返回值為1(short);
2:將y=1返回的結果,也就是1(short)賦值給z,所以z是1(short)裝箱后的對象,
GetType返回System.Int16.
值得一提的是,如果你將上面的const int x=1中的const去掉,代碼如下:
int x=1;short y;object z;z=y=x;

因為x是Int32,y是Int16,因為Int32無法隱式轉換成Int16.所以這段代碼無法通過編譯:
clip_image002
接著考慮第二題:

復制代碼 代碼如下:

class C
 {
     private string x;
     public string X
     {
         get { return x ?? ""; }
         set { x = value; }
     }
 }

static void Main()
{
    C c = new C();
    object z;
    z = c.X = null;

    //下面兩句話輸出什么
    System.Console.WriteLine(z == null);
    System.Console.WriteLine(c.X == null);
}

關鍵就是分析:z=c.X=null;

1:c.X=null;調用c的setX方法,設置x=null,并且將null作為值返回。

2:z=(c.X=null);因為c.X=null,返回了null,所以將null賦值給z,z此時為null;

3:Console.WriteLine(z==null),返回True;

4:Console.WriteLine(c.X==null),調用c的getX方法,方法返回””,所以c.X==null,返回False

你都做對了嗎?

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 午夜老湿影院 | 日本中文字幕免费 | 久久成人综合网 | 香蕉av777xxx色综合一区 | 天天射夜夜爽 | av自拍 | 91在线免费观看 | 国产激情一区二区三区 | 久久综合一区二区三区 | 日本在线观看一区二区 | 亚洲人体在线 | 涩涩视频网站在线观看 | 韩国电影久久影院 | 杏导航aⅴ福利网站 | 亚洲免费网站在线观看 | 国产欧美精品区一区二区三区 | 男女羞羞视频免费观看 | 久久久久国产一区二区三区四区 | 禁果av一区二区三区 | 国产乱a视频在线 | 国产精品久久久久久 | 在线中文字幕日韩 | 亚洲免费视频一区 | 日韩欧美国产成人一区二区 | 国产精品久久国产精品 | 国产一区免费视频 | 欧美日韩成人在线观看 | youjizz国产 | 国产成人精品久久 | 日韩一级片在线观看 | 色婷婷综合久久久久中文一区二区 | 精品久久久中文字幕 | 欧美黄色一区二区 | 欧美欧美欧美 | 在线日韩一区 | 欧美一区二区视频 | caoporon| 成年人在线视频免费观看 | 蜜桃视频网站在线观看 | 国产黄色毛片 | 成人亚洲在线观看 |