общественный интерфейс различий между vs2008 и vs2010? - PullRequest
0 голосов
/ 30 марта 2012

Я только что создал простой проект в VS2010, C # dotnet 3.5

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Business.Util
{
        public interface ICalculateCurrent<in T1, in T2, in T3, in T4>
        {
            bool GetValue(T1 obj1, T2 obj2, T3 obj3, T4 obj4);
        }

        public static class test
        {
            static void Main(string[] args)
            {

            }
        }
}

Хорошо, на данный момент ничего не делает, но он компилируется.

Потом понял, что я действительно хотелчтобы сделать это в VS2008, dotnet3.5 я создал точно такой же код, и я получаю только ошибки относительно интерфейса;

Invalid token 'in' in class, struct, or interface member declaration
Type expected
Invalid token ',' in class, struct, or interface member declaration
Invalid token ',' in class, struct, or interface member declaration
Invalid token ',' in class, struct, or interface member declaration
Invalid token '>' in class, struct, or interface member declaration

Обе ссылки проекта одинаковы.Что мне не хватает в этом?

спасибо.

Ответы [ 3 ]

6 голосов
/ 30 марта 2012

Для вариантов интерфейса требуется версия компилятора C # VS2010. Несмотря на то, что вы ориентируетесь на .NET 3.5, он все еще использовал новый компилятор.

Нет способа сделать это с VS2008, извините. .NET 3.5 включает поддержку времени выполнения для различных интерфейсов, но более старый компилятор C # этого не делает.

Если вы не используете дисперсию интерфейса, просто удалите in все четыре раза, которые появляются в этой строке.

4 голосов
/ 30 марта 2012

К VS10 добавлено ключевое слово in для генериков. Читайте здесь .

1 голос
/ 30 марта 2012

Ключевые слова out и in и, следовательно, ковариантные и контравариантные параметры универсального типа являются новыми для C # 4.0 (поставляется с VS 2010).

...