[姆咪] 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