Что это значит, когда в объявлении массива есть запятая? например плавать [,]

Если T соответствует нескольким ограничениям, вы создаете неоднозначность, которая не может быть автоматически разрешена. Например, у вас есть один общий класс с ограничением

where T : IFirst

, а другой с ограничением

where T : ISecond

Вы теперь хотим, чтобы T был классом, который реализует как IFirst, так и ISecond.

Пример кода бетона:

public interface IFirst
{
    void F();
}

public interface ISecond
{
    void S();
}

// Should the compiler pick this "overload"?
public class My<T> where T : IFirst
{
}

// Or this one?
public class My<T> where T : ISecond
{
}

public class Foo : IFirst, ISecond
{
    public void Bar()
    {
        My<Foo> myFoo = new My<Foo>();
    }

    public void F() { }
    public void S() { }
}
35
задан Tyler Lee 10 December 2012 в 19:44
поделиться