Nemerle:
class A[A] {}
Компилируется.
C# аналогичный код:
error CS0694: Type parameter 'A' has the same name as the containing type, or method
В чем связан запрет в C# ?
Здравствуйте, _NN_, Вы писали:
_NN>Nemerle:
_NN>_NN>class A[A] {}
_NN>
_NN>Компилируется.
_NN>C# аналогичный код:
_NN>error CS0694: Type parameter 'A' has the same name as the containing type, or method
_NN>В чем связан запрет в C# ?
Конструктор будет как выглядеть?
public A(A a) { this.a = a;}
Здравствуйте, Аноним, Вы писали:
_NN>>В чем связан запрет в C# ?
А>Конструктор будет как выглядеть?
А>А>public A(A a) { this.a = a;}
А>
А в чем проблема ? Не можем выбрать какой A ?
Можно трактовать всегда как обобщенный аргумент, а для класса указывать полное имя, скажем global::A.
Или надо изначально было делать по уму
В Nemerle все решается просто и логично:
class A[A]
{
// typeof(x) - сам класс
// typeof(y) - обобщенный аргумент.
public this(x : this, y : A)
{
}
}
Здравствуйте, _NN_, Вы писали:
_NN>А в чем проблема ? Не можем выбрать какой A ?
_NN>Можно трактовать всегда как обобщенный аргумент, а для класса указывать полное имя, скажем global::A.
_NN>Или надо изначально было делать по уму
_NN>В Nemerle все решается просто и логично:
_NN>_NN>class A[A]
_NN>{
_NN> // typeof(x) - сам класс
_NN> // typeof(y) - обобщенный аргумент.
_NN> public this(x : this, y : A)
_NN> {
_NN> }
_NN>}
_NN>
А вы пробовали this юзать в генерик-типах? Прошлый раз когда я пробовал, все плачевно закончилось.
Но вообще я согласен, Немерле здесь выигрывает.
Здравствуйте, catbert, Вы писали:
C>А вы пробовали this юзать в генерик-типах? Прошлый раз когда я пробовал, все плачевно закончилось.
Баги конечно надо бы чинить, было бы только время
В данном примере все хорошо работает.
C>Но вообще я согласен, Немерле здесь выигрывает.
Здравствуйте, _NN_, Вы писали:
_NN>В чем связан запрет в C# ?
очевидно с тем что практической пользы от такого кода нет, а разрешение конфликта усложнит спецификацию.
... << RSDN@Home 1.2.0 alpha 5 rev. 1539>>