Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 泛型类中可接受的类型对接口中使用的类型的限制_C#_.net_Generics - Fatal编程技术网

C# 泛型类中可接受的类型对接口中使用的类型的限制

C# 泛型类中可接受的类型对接口中使用的类型的限制,c#,.net,generics,C#,.net,Generics,又是我 我希望你能再次帮助我(并且再次理解我想问的问题) 我有接口: public interface i { string a {get;set;} int b {get;set;} classname c {get;set;} } 我想讨论一下泛型类: public class someclass<T> { T _value; public sobeclass(T value) { _value = value; } 公共类so

又是我

我希望你能再次帮助我(并且再次理解我想问的问题)

我有接口:

public interface i
{
    string a {get;set;}
    int b {get;set;}
    classname c {get;set;}
}
我想讨论一下泛型类:

 public class someclass<T>
 {

 T _value;
 public sobeclass(T value)
 {
     _value = value;
 }
公共类someclass
{
T_值;
公共sobeclass(T值)
{
_价值=价值;
}
但是我不希望T只能有i接口的类型

我希望你能理解我

感谢您的帮助

您可以使用:

公共类someclass
T:我在哪里
{
...
}
您可以使用:

公共类someclass
T:我在哪里
{
...
}
您可以使用:

公共类someclass
T:我在哪里
{
...
}
您可以使用:

公共类someclass
T:我在哪里
{
...
}

请注意,
T
可以是实现
I
的类,也可以是扩展
I
的接口,或者
I
本身。此方法允许我将T实例放置在接口的位置,例如,当类C:I时,我可以将C或I放置在T的位置,但我需要放置C。a@Aht您的意思是要约束
T
若要
string
int
、或
classname
,您不能这样做。如果您有一组有限的不相关类型,则必须为这些类型中的每一个提供重载。或者找到这些类型中的共同点,使用和约束
t
抽象到
IAdapter
-但我认为您的类型没有有什么共同点。@Aht这是一个。发布一个新问题,描述你在排序数据时遇到的问题,发布你当前的解决方案和代码。但听起来你需要的是LINQ。请注意,
T
可以是实现
I
的类,也可以是扩展
I
的接口,或者
I
本身。这种方法od允许我在接口中放置T实例的位置,例如当类C:I时,我将能够放置C或I代替T,但我需要放置C。a@Aht您的意思是要将
T
约束为
string
int
classname
?您不能这样做。如果您有一组有限的不相关类型,则必须提供ide重载这些类型中的每一个。或者找到这些类型中的共同点,使用和约束
T
抽象到
IAdapter
-但我认为您的类型没有任何共同之处。@Aht这是一个问题。发布一个新问题,描述您在排序数据时遇到的问题,并发布您当前的解决方案和您的答案r代码。但听起来LINQ是您需要的。请注意,
T
可以是实现
I
的类,也可以是扩展
I
的接口,或者是
I
本身。此方法允许我将T实例放置在接口的位置,例如,当类C:I时,我可以将C或I放置在T的位置,但我需要放置C。a@AhtY您的意思是要将
T
约束到
string
int
classname
?您不能这样做。如果您有一组有限的不相关类型,则必须为这些类型中的每一个提供重载。或者找到这些类型中的共同点,使用将其抽象出来,并将约束
T
约束到
IAdapter
-但我认为您的类型没有任何共同之处。@这是一个问题。发布一个新问题,描述您在排序数据时遇到的问题,并发布您当前的解决方案和代码。但听起来您需要的是LINQ。请注意,
t
可以是实现
I
的类,也可以是扩展
的接口>I
,或
I
本身。此方法允许我将T实例放置在接口的位置,例如,当类C:I时,我将能够放置C或I代替T,但我需要放置C。a@Aht您的意思是要将
T
约束为
string
int
classname
?您不能这样做。如果您有限制对于一组不相关的类型,您必须为这些类型中的每一个提供重载。或者查找这些类型之间的共同点,使用抽象,并将约束
T
约束到
IAdapter
-但我认为您的类型没有任何共同点。@Aht这是一个。发布一个新问题,描述您在排序时遇到的问题数据,并发布您当前的解决方案和代码。但听起来LINQ是您所需要的。
public class someclass<T>
  where T : I
{
  ...
}