簡體   English   中英

可空 <T> 對於c#中的泛型方法?

[英]Nullable<T> for generic method in c#?

如何編寫可以將Nullable對象用作擴展方法的泛型方法。 我想向父元素添加一個XElement,但前提是要使用的值不為null。

例如

public static XElement AddOptionalElement<T>(this XElement parentElement, string childname, T childValue){
...
code to check if value is null
add element to parent here if not null
...
}

如果我使這個AddOptionalElement<T?>(...)然后我得到編譯器錯誤。 如果我使這個AddOptionalElement<Nullable<T>>(...)然后我得到編譯器錯誤。

有沒有辦法可以實現這個目標?

我知道我可以調用這個方法:

parent.AddOptionalElement<MyType?>(...)

但這是唯一的方法嗎?

public static XElement AddOptionalElement<T>(
    this XElement parentElement, string childname, T? childValue)
    where T : struct
{
    // ...
}

您需要將T約束為struct - 否則它不能為空。

public static XElement AddOptionalElement<T>(this XElement parentElement, 
                                             string childname, 
                                             T? childValue) where T: struct { ... }

嘗試
AddOptionalElement<T>(T? param) where T: struct { ... }

Nullable類型具有約束where T : struct, new()因此您的方法應該包含struct約束以使Nullable<T>正常工作。 生成的方法應如下所示:

public static XElement AddOptionalElement<T>(this XElement parentElement, string childname, T? childValue) where T : struct
    {
      // TODO: your implementation here
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM