Re: [姆咪] C# Generic 大师请尽

楼主: ZooseWu (N5)   2023-09-17 13:14:55
※ 引述《nh60211as (xXx_5354M3_31M0_xXx)》之铭言:
: 我想写个 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?
: 急
: 在线等
1.包一层
public class foo<T>{
public T value;
public bool isnNull;
}
static foo<T> ExecuteGetNullable<T>(Func<T> func)
{
...
}
2.改成用 default
ExecuteGetNullable -> ExecuteOrDefault
catch{
return default(T);
}
我记得可以直接拿来比对
if(ExecuteOrDefault() == default(T))
{
...
}
我只想到这些
作者: Rushia (みけねこ的鼻屎)   2023-09-17 13:15:00
大师
作者: DreaMaker167 (dreamaker)   2023-09-17 13:15:00
大师
作者: dannyko (dannyko)   2023-09-17 13:15:00
大师
作者: sustainer123 (caster)   2023-09-17 13:16:00
大师
作者: jajeongsalan (插总撒狼)   2023-09-17 13:17:00
大师ts可以直接用typeof string | number
作者: HccrtZ (Violet)   2023-09-17 13:17:00
你就继续写扣不跳伞
作者: jajeongsalan (插总撒狼)   2023-09-17 13:18:00
干推错 后面多的 但我是想问ts 可以这样写 原来 c#不行OAO
作者: amam1111 (thousand)   2023-09-17 13:19:00
大师
作者: PogChampLUL (火车站肥宅)   2023-09-17 13:21:00
大师
作者: JerryChungYC (JerryChung)   2023-09-17 13:28:00
大师
作者: nh60211as   2023-09-17 13:31:00
谢啦,看来第一个方法比较可行,第二个会回 defaultvalue 很难验证结果是有错误还是真的是 default value
作者: jajeongsalan (插总撒狼)   2023-09-17 13:56:00
原来是这样

Links booklink

Contact Us: admin [ a t ] ucptt.com