C#通用约束问题
我可以在C#中的基类中声明的派生类型上传播泛型约束吗 示例程序显示错误: 类型“T”不能用作泛型类型中的类型参数“T” 或方法“Test.Base”。没有装箱转换或类型参数 从“T”到“Test.IBase”的转换C#通用约束问题,c#,.net,generics,C#,.net,Generics,我可以在C#中的基类中声明的派生类型上传播泛型约束吗 示例程序显示错误: 类型“T”不能用作泛型类型中的类型参数“T” 或方法“Test.Base”。没有装箱转换或类型参数 从“T”到“Test.IBase”的转换 接口IBase { } 类基址,其中T:IBase { } 派生类:基 { } 类派生:基,其中T:IBase { } 类派生:基,其中T:IBase { } 应该是: class Derived<T> : Base<T> where T : IBase {
接口IBase
{
}
类基址,其中T:IBase
{
}
派生类:基
{
}
类派生:基,其中T:IBase
{
}
类派生:基,其中T:IBase
{
}
应该是:
class Derived<T> : Base<T> where T : IBase
{
}
类派生:基,其中T:IBase
{
}
始终显式地放置约束,因为T只是一个声明,它与基类中的T不同。应该是:
class Derived<T> : Base<T> where T : IBase
{
}
类派生:基,其中T:IBase
{
}
始终明确地设置约束,因为T只是一个声明,它与基类中的T不同。在派生的类中,您没有指定T
必须实现IBase
,因为它在中用作base
中的类型参数,所以不能说任何T
可以使用。将其更改为:
class Derived<T> : Base<T> where T : IBase
类派生:基,其中T:IBase
在派生的
类中,您没有指定t
必须实现IBase
,因为它在中用作Base
中的类型参数,所以不能说任何t
都可以使用。将其更改为:
class Derived<T> : Base<T> where T : IBase
类派生:基,其中T:IBase
我已经申请了,但是html格式有错误。所以请再检查一遍。我已经申请了,但是html格式有错误。所以请再检查一遍。这是我已经在基类上完成的重复任务。在C++中,这是可能的。C#没有提供任何技巧吗?不幸的是,在C#中,您应该始终在派生类型中定义约束。这是我已经在基类上完成的重复任务。在C++中,这是可能的。C#没有提供任何技巧吗?不幸的是,在C#中,您应该始终在派生类型中定义约束。这是我已经在基类上完成的重复任务。在C++中,这是可能的。C#没有提供任何技巧吗?这是另一个t,你仍然必须约束它;它不知道它和基类是一样的。@RajdipPatel:L-Three说的。将T
视为方法的参数。仅仅因为方法的两个参数命名相同并不意味着它们引用相同的东西。这是我已经在基类上完成的重复任务。在C++中,这是可能的。C#没有提供任何技巧吗?这是另一个t,你仍然必须约束它;它不知道它和基类是一样的。@RajdipPatel:L-Three说的。将T
视为方法的参数。仅仅因为方法的两个参数命名相同并不意味着它们引用相同的东西。