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

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

將對(duì)象強(qiáng)制轉(zhuǎn)換為子類型?(低頭)

將對(duì)象強(qiáng)制轉(zhuǎn)換為子類型?(低頭)

C#
阿晨1998 2021-08-29 17:48:21
我明白,沮喪可能不是實(shí)現(xiàn)我的愿望的最佳方式,但它至少表明了我腦海中閃過(guò)的那種解決方案。歡迎任何其他建議。好吧,不妨深入研究一下我的代碼:public void triggerItem(Item item) {    if (item is Weapon) {        equipWeapon(item);    }       }public void equipWeapon(Weapon weapon) {}所以我基本上有一個(gè)庫(kù)存設(shè)置,當(dāng)然庫(kù)存將包含各種類型的物品(武器,盔甲,消耗品等)正如你所看到的,我有一個(gè) Item 類,然后是一個(gè) Weapon 類和一堆其他的都繼承Item?,F(xiàn)在,我打算在玩家單擊其庫(kù)存中的項(xiàng)目時(shí)調(diào)用此函數(shù),然后根據(jù)特定的項(xiàng)目類型調(diào)用不同的函數(shù)。但是因?yàn)閑quipWeapon()收到武器,所以當(dāng)我只是給它傳遞一個(gè)物品時(shí)它不喜歡它。我知道我可以將代碼更改為equipWeapon(Item item),但是對(duì)象的最終目標(biāo)需要一個(gè) Weapon 類型,而我不愿意更改它。這似乎是一個(gè)骯臟的解決方案,朝著錯(cuò)誤的方向邁出了一步,但如果我錯(cuò)了,請(qǐng)隨時(shí)糾正我。
查看完整描述

2 回答

?
絕地?zé)o雙

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

這就解決了。


public void triggerItem(Item item) 

{

    if (item is Weapon) {

        equipWeapon((Weapon)item);

    }       

}


public void equipWeapon(Weapon weapon) 

{


}

你在這里做什么是向下轉(zhuǎn)換的Item以Weapon同時(shí)傳遞到equipWeapon(Weapon weapon)。


查看完整回答
反對(duì) 回復(fù) 2021-08-29
?
動(dòng)漫人物

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

給你的基類一個(gè)方法,讓它被裝備,并在知道如何裝備自己的特定于類型的類中實(shí)現(xiàn)它。


例子:


abstract class Item

{

    public abstract void Equip();

}


class Weapon

{

    public override void Equip()

    {

        equipWeapon(this);

    }

}

然后 triggerItem 變得微不足道:


public void triggerItem(Item item) 

{

    item.Equip();

}       

如果你需要在不同的類(例如任何包含的類triggerItem)上調(diào)用裝備武器,你可以使類成為接口的一部分:


abstract class Item

{

    public abstract void Equip(Game context);

}


class Weapon

{

    public override void Equip(Game context)

    {

        context.equipWeapon(this);

    }

}


class Game

{

    public void triggerItem(Item item) 

    {

        item.Equip(this);

    }       

}


查看完整回答
反對(duì) 回復(fù) 2021-08-29
  • 2 回答
  • 0 關(guān)注
  • 182 瀏覽

添加回答

舉報(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)