※ 引述《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))
{
...
}
我只想到這些