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

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

使用 Method 的 Generic T 創(chuàng)建具有相同 Generic T 的另一個對象的新實(shí)例

使用 Method 的 Generic T 創(chuàng)建具有相同 Generic T 的另一個對象的新實(shí)例

C#
慕斯709654 2023-05-13 16:19:19
所以我有一個看起來像這樣的方法public void Register<T>(TimeSpan interval, ILogger logger) where T : ISchedule{    _schedules.Add(new Schedule<T>(interval, logger));}我想用提供給 Register 方法的 T 創(chuàng)建一個新的 Schedule。internal class Schedule<T> : IDisposable where T : ISchedule, new() {}在這里我收到以下錯誤:'T' must be a non-abstract type with a public parameterless constructor in order to use it as parameter 'T' in the generic type or method 'Schedule<T>'這種行為甚至可能還是我做錯了什么?
查看完整描述

1 回答

?
PIPIONE

TA貢獻(xiàn)1829條經(jīng)驗 獲得超9個贊

您還需要將where T : ISchedule, new()您在Schedule<T>類上指定的約束應(yīng)用于該方法:Register


public void Register<T>(TimeSpan interval, ILogger logger) where T : ISchedule, new()

{

? ? _schedules.Add(new Schedule<T>(interval, logger));

}

考慮以下兩個實(shí)現(xiàn)該ISchedule接口的類。


public class Schedule1 : ISchedule

{

? ? public Schedule1() { }

}


public class Schedule2 : ISchedule

{

? ? public Schedule2(string foo) { }

}

該類Schedule<T>具有泛型類型約束where T : ISchedule, new(),這意味著只有那些實(shí)現(xiàn)ISchedule并包含無參數(shù)構(gòu)造函數(shù)的類型才能用作類型參數(shù)。因此,指定一個Schedule<Schedule2>sinceSchedule2不包含無參數(shù)構(gòu)造函數(shù)是非法的。


如果我們不對方法應(yīng)用相同的類型約束Register,我們可以同時使用Schedule1和調(diào)用該方法Schedule2。由于Schedule2不符合 的Schedule<T>類型約束,我們現(xiàn)在有一個問題 ( 'T' must be a non-abstract type with a public parameterless constructor in order to use it as parameter 'T' in the generic type or method 'Schedule<T>') 可以通過對方法應(yīng)用相同的約束來Schedule<T>解決Register。



查看完整回答
反對 回復(fù) 2023-05-13
  • 1 回答
  • 0 關(guān)注
  • 160 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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