是否可以在C#中定义部分泛型类

时间:2017-09-06 13:08:38

标签: c# .net

有一个类定义,如下面的示例:

public abstract partial class MyClass<T> where T : MyClass<T>
{
....
}

第二个文件包含以下定义:

partial class MyClass<T>
{
}

另外,我在第二个文件中定义了部分部分,如下面的代码片段所示:它不是决定性的:

partial class MyClass<T> where T : MyClass<T>

使用partial关键字将此特定抽象类拆分为两个单独的文件的尝试在C#中失败。因此,令人惊讶的是编译器通过生成编译错误来拦截它。事实上,变量和属性从第一个部分移动到第二个部分,并且编译器在第一个类中给出了一个错误,即找不到变量和属性。

我尝试了很多但没有运气。

在分割这样的定义或者编译器的行为方式时,我们是否存在错误?

2 个答案:

答案 0 :(得分:3)

以下是部分泛型类的外观。

public partial class MyClass<T> where T : MyClass<T>
{
    public void SomeMethod() { Console.WriteLine("some method"); }
}

public partial class MyClass<T> where T : MyClass<T>
{
    public void SomeOtherMethod() { Console.WriteLine("some other method"); }
}

答案 1 :(得分:0)

partial仅用于跨多个源文件拆分类。类定义本身必须相同。