C# 如何限制泛型接口使用的类型?
我有以下界面:C# 如何限制泛型接口使用的类型?,c#,C#,我有以下界面: public interface IService<T> { void AddOrUpdate(T tab); bool Available(); 公共接口iSeries设备 { 无效添加或更新(T选项卡); bool可用(); 我是否可以限制此接口,使其只能用于某些类型 参数名的意义是什么“tab”。这可能是一个合理的名称,还是与接口的使用位置有关?您可以使用where关键字来限制泛型类型使用的类型 例如: public
public interface IService<T>
{
void AddOrUpdate(T tab);
bool Available();
公共接口iSeries设备
{
无效添加或更新(T选项卡);
bool可用();
我是否可以限制此接口,使其只能用于某些类型
参数名的意义是什么“tab”。这可能是一个合理的名称,还是与接口的使用位置有关?您可以使用
where
关键字来限制泛型类型使用的类型
例如:
public interface IService<T>where T:IComparable { }
{
void AddOrUpdate(T tab);
bool Available();
公共接口IServicewhere T:IComparable{}
{
无效添加或更新(T选项卡);
bool可用();
字母“T”没有意义。只指定类型或模板。您可以使用任何字母。
“tab”只是一个名称。您可以指定任何有意义的名称。请参阅以下关于的文章。这些约束是使用where关键字定义的。您可以这样说:
public interface IService<T> where T : Employee
{
void AddOrUpdate(T tab);
bool Available();
}
公共接口iSeries设备,其中T:Employee
{
无效添加或更新(T选项卡);
bool可用();
}
我是否可以限制此接口,使其只能用于某些类型
是的,您可以这样限制泛型类型的使用:
public interface IService<T> where T : IServicableType
公共接口IService,其中T:IServicableType
在这种情况下,T只能是实现(或继承自类)IServicableType的类型
这可能是一个合理的名称,或者与接口的使用位置有联系吗
不,参数名称无关紧要。类的方法的参数名称不需要反映接口的参数名称。这是因为参数名称不影响方法的签名。只有签名必须匹配。对不起,应该是“制表符”。它是为参数指定的名称。它可以是任何名称吗?tab只是一个名称。您可以指定任何有意义的名称。