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