Объявите, что 2 типа в использовании оператора дают ошибку компиляции?

Я хочу использовать эту строку кода:

using (ADataContext _dc = new ADataContext(ConnectionString), BDataContext _dc2 = new BrDataContext(ConnectionString)){ // ...}

Это дает ошибку компиляции:

Не может использовать больше чем один вводит для, использование, зафиксированный или declartion оператор.

Я думал, что это было возможно? MSDN заявляет, что это: http://msdn.microsoft.com/en-us/library/yh598w02%28VS.80%29.aspx В примере кода MSDN Шрифт используется, который является классом и таким образом ссылочным типом, а также моими двумя классами DataContext.

Что пошло не так, как надо здесь? Как моя попытка отличается от образца MSDN?

7
задан citronas 25 March 2010 в 23:08
поделиться

3 ответа

MSDN объявил экземпляры двух объектов одного типа. Вы объявляете несколько типов, поэтому вы получили сообщение об ошибке.

Редактировать: Чтобы использовать все «Эрика Липперта», в разделе 8.13 спецификации языка говорится:

Когда получение ресурса принимает форму объявления локальной переменной, можно получить несколько ресурсов заданного типа. Оператор using в форме

using (ResourceType r1 = e1, r2 = e2, ..., rN = eN) statement

в точности эквивалентен последовательности вложенных операторов using:

using (ResourceType r1 = e1)
    using (ResourceType r2 = e2)
        ...
            using (ResourceType rN = eN)
                statement

Ключ в том, что это ресурсы данного типа , а не типы, что соответствует примеру MSDN.

13
ответ дан 6 December 2019 в 05:55
поделиться

Сделайте это вместо этого

using (ADataContext _dc = new ADataContext(ConnectionString))
using (BDataContext _dc2 = new BrDataContext(ConnectionString))
{ // ...}
12
ответ дан 6 December 2019 в 05:55
поделиться

Оператор получения ресурсов с использованием может быть декларацией. Объявление может объявлять только переменные типа одного .

Вы можете:

using (TypeOne t = something, t2 = somethingElse) { ... }
// Note that no type is specified before `t2`. Just like `int a, b`

но вы не можете

using (TypeOne t = something, TypeTwo t2 = somethingElse) { ... }
6
ответ дан 6 December 2019 в 05:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: