2010-06-30 2 views
-1

может я:C# шаблон специализации

class X<T> 
     where T : EventArgs 
    { 

    } 

    class X<T> 
     where T:Exception 
    { 

    } 

в C#?

+0

Не совсем понятно, чего вы на самом деле хотите достичь. – Noldorin

+2

-1 - Если вы не читали документацию, C# не имеет ШАБЛОНОВ, у него есть GENERICS. Существует четкое различие - что делает специализацию невозможной. – TomTom

+0

Хорошо, он, вероятно, хочет сделать шаблоны, как на C++. Рад, что он не поддерживается, тем не менее, вызывает боль. – Noldorin

ответ

1

Вы не можете использовать одно и то же имя класса для общих ограничений.

Вы можете использовать базовые классы в качестве ограничений, но это ограничение означает, что вы можете использовать только производные классы - в ваших примерах, только классы, которые производятся от EventArgs в первом примере и классах, которые производятся от Excpetion во втором.

См. documentation для ограничений на параметры типа.

+0

именно то, что я хочу, один класс для T, который происходит от одного класса и аноним для тех, которые происходят от другого –

0

Нет, поскольку две кланы имеют одно и то же имя.

Что вы пытаетесь сделать?

0

Если вы имеете в виду 2 класса с таким же именем в том же пространстве имен с различными параметрами общего типа - тогда NO, вы не можете!

У вас может быть только один класс в , где. Вы можете использовать

System.Runtime.InteropServices._Exception интерфейс

принимать исключения (это было бы некрасиво хак, хотя).

Если вы поместите их в отдельные пространства имен, вы можете.

Смежные вопросы