第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

在 C# 中轉(zhuǎn)換基本數(shù)組的派生成員

在 C# 中轉(zhuǎn)換基本數(shù)組的派生成員

C#
慕虎7371278 2022-11-21 21:26:59
我有一個(gè)Shape包含兩個(gè)派生類的基類Circle和Rectangle. 現(xiàn)在我已經(jīng)編寫了從Rectangle到 的顯式轉(zhuǎn)換,Circle反之亦然。它們沒(méi)有多大意義,但這不是我現(xiàn)在的意思。我創(chuàng)建了新的Rectangle和Circle實(shí)例,并希望通過(guò)強(qiáng)制轉(zhuǎn)換將其分配Rectangle給Circle。這按預(yù)期工作。但是,如果我有一個(gè)類型為 的數(shù)組Shape,其中填充了Rectangles,并且想要轉(zhuǎn)換數(shù)組的成員,它會(huì)拋出一個(gè)System.InvalidCastException. 因?yàn)槲乙呀?jīng)寫了明確的演員表,所以我不知道為什么這是不可能的。Shape[] arr = new Shape[5];Circle c1 = new Circle(1, 2, 3);Circle c2 = new Circle(4, 5, 6);Rectangle r1 = new Rectangle(7, 8);Rectangle r2 = new Rectangle(9, 10);Shape c3 = new Circle(3, 9, 13);arr[0] = c1;arr[1] = c2;arr[2] = r1;arr[3] = r2;arr[4] = c3;Console.WriteLine(r1.GetType());Console.WriteLine(arr[2].GetType()); // both evalute to RectangleCircle r3 = (Circle)r1;             // compilesCircle r4 = (Circle)arr[2];         // Unhandled Exception好的,正如 Ondrej 指出的那樣,這是從形狀到圓形的轉(zhuǎn)換,這是不允許的。然而,ingvar 指出這是可行的:Circle r5 = (Circle)((Rectangle)arr[2]);    Rectangle r6 = (Rectangle)((Circle)arr[0]);這不是Circle r5 = (Circle)arr[2];   Rectangle r6 = (Rectangle)arr[0];謝謝你的幫助!
查看完整描述

2 回答

?
HUWWW

TA貢獻(xiàn)1874條經(jīng)驗(yàn) 獲得超12個(gè)贊

Circle r4 = (Circle)arr[2];

編譯器無(wú)法應(yīng)用顯式強(qiáng)制轉(zhuǎn)換,因?yàn)樗鼰o(wú)法靜態(tài)確定arr[2]實(shí)際上存儲(chǔ)了一個(gè)Rectangle. 對(duì)于編譯器,它是Shape并且因此(Circle)arr[2]是從Shape到的轉(zhuǎn)換Circle


查看完整回答
反對(duì) 回復(fù) 2022-11-21
?
青春有我

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超8個(gè)贊

您將Shape數(shù)組的元素Circle直接轉(zhuǎn)換為,這是不可能的,因?yàn)閷?shí)際上您的對(duì)象是Rectangle. 嘗試顯式轉(zhuǎn)換:

Circle r4 = (Circle)((Rectangle)arr[2]);


查看完整回答
反對(duì) 回復(fù) 2022-11-21
  • 2 回答
  • 0 關(guān)注
  • 161 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)