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