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只是一个名称。您可以指定任何有意义的名称。