簡體   English   中英

如何在 C# dotnet 中限制多個泛型參數

[英]how does one restrict multiple generics arguments in C# dotnet

您如何“限制”2 個或更多(多個)占位符?

public abstract class MyBaseClass<T> : ISomethingElse<T> where T : struct
{
}

請注意,T 僅限於“結構”,這些年來我已經多次這樣做了。

以上工作正常

現在我想創建一個通用類定義,我想對 T AND K 施加約束。

public abstract class MyBaseClass<T, K> : ISomethingElse<T, K> where T : struct , K : struct
{
}

以上..我無法弄清楚神奇的語法糖。

我知道“容易”。

您需要兩次where關鍵字。

class Foo<T, K>
   where T : struct
   where K : struct
{
}

這些是對類型參數的約束, 文檔中有很多關於它們的有用信息。

您可以通過為由空格分隔的每個參數包含where約束來限制多個通用參數。 因此,在您的代碼片段中,這將如下所示:

public abstract class MyBaseClass<T, K> : ISomethingElse<T, K> where T : struct where K : struct
{
}

或者更易讀的版本是:

public abstract class MyBaseClass<T, K> : ISomethingElse<T, K> 
  where T : struct 
  where K : struct
{
}

暫無
暫無

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

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