[姆咪] C# Generic 大師請盡

作者: nh60211as   2023-09-17 12:50:30
我想寫個 Generic Function 來讓輸入的 Function func 拋錯的時候回傳 null
static T? ExecuteGetNullable<T>(Func<T> func) where T : class? {
try {
return func.Invoke();
} catch {
return null;
}
}
這個用在 string type 編譯沒問題
static string? GetNullableString() {
return ExecuteGetNullable(() => {
return "";
});
}
可是用在 ulong type 的時候編譯器就不高興了
https://i.imgur.com/ZH7SmC9.png
static ulong? GetNullableUlong() {
return ExecuteGetNullable(() => {
return 0ul;
});
}
查了一下 string 是 class、ulong 是 struct,所以 type constraint 不符合
那有沒有辦法讓這個 generic function 同時接受 class? 跟 struct?

在線等
作者: DreaMaker167 (dreamaker)   2023-09-17 12:52:00
毒物王這什麼人設
作者: dannyko (dannyko)   2023-09-17 12:52:00
泥板功能越來越多了 這篇還特地上色
作者: yam276 ('_')   2023-09-17 12:54:00
你手動上色嗎
作者: nh60211as   2023-09-17 12:56:00
手動上ㄉ。之前有個網站可以上色,可是掛掉了
作者: ksdout (ダウト)   2023-09-17 13:14:00
你這方法和struct矛盾了,struct是值型別沒有null如果你想要通用的話,一個解決方法是把where拿掉,returnnull改成return default(T),然後方法改個名字
作者: nh60211as   2023-09-17 13:23:00
感謝,但是用default會回傳default value而不是回null我再朝這個方向看看

Links booklink

Contact Us: admin [ a t ] ucptt.com