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

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

強(qiáng)制實(shí)例實(shí)現(xiàn)一個(gè)方法

強(qiáng)制實(shí)例實(shí)現(xiàn)一個(gè)方法

C#
精慕HU 2021-11-07 19:43:28
可以強(qiáng)制派生類實(shí)現(xiàn)特定功能?,F(xiàn)在,是否可以對類的每個(gè)實(shí)例分別執(zhí)行相同的操作?(可能是在調(diào)用像 Java 即時(shí)覆蓋這樣的構(gòu)造函數(shù)時(shí))// on-the-fly override sample @JavaprogressBar.setOnClickListener(new View.OnClickListener() {    @Override    public void onClick(View v) {    }});ps:只有一個(gè)類我想為它創(chuàng)建一個(gè)實(shí)例。在這種情況下沒有子類。
查看完整描述

2 回答

?
瀟瀟雨雨

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

實(shí)例不能實(shí)現(xiàn)接口,只有類可以。同樣在Java中這是不可能的。取而代之的是,在后面創(chuàng)建了一個(gè)從您的基類派生的匿名類,它顯示為您的基類的實(shí)例。


要在 C# 中實(shí)現(xiàn)類似的功能,您可以使用委托并在類的構(gòu)造函數(shù)中提供它:


class MyClass

{

    Action<T> TheAction { get; private set; }

    public MyClass(Action<T> doSomething() { this.TheAction = doSomething; }

}

現(xiàn)在您可以為每個(gè)實(shí)例提供不同的行為:


var i1 = new MyClass(x => Console.WriteLine(x));

var i2 = new MyClass(x => DoSomething(x));

但是我不明白為什么你甚至需要這個(gè)。要為進(jìn)度條啟用點(diǎn)擊事件,只需執(zhí)行以下操作:


myProgressBar.Click += (sender, args) => { /* what ever */ };

或者:


myProgressBar.Click += MyMethod;


MyMethod(object sender, EventArgs args) { /* what ever */ }


查看完整回答
反對 回復(fù) 2021-11-07
?
慕姐8265434

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

Interfaces可用于要求所有派生對象實(shí)現(xiàn)其方法(請參閱this)。不過,從這個(gè)聲音來看,base.Method()更多的是你正在尋找的東西(見這個(gè)):


internal class A {

    public virtual void DoSomething() { }

}

internal class B : A {

    public override void DoSomething() { base.DoSomething(); }

}

以上對于確保在調(diào)用A.DoSomething時(shí)執(zhí)行其中的代碼很有用B.DoSomething。


使用 aninterface是我所知道的強(qiáng)制派生對象實(shí)現(xiàn)方法的唯一方法。


查看完整回答
反對 回復(fù) 2021-11-07
  • 2 回答
  • 0 關(guān)注
  • 180 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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