Я хочу использовать эту строку кода:
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?
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.
Сделайте это вместо этого
using (ADataContext _dc = new ADataContext(ConnectionString))
using (BDataContext _dc2 = new BrDataContext(ConnectionString))
{ // ...}
Оператор получения ресурсов с использованием
может быть декларацией. Объявление может объявлять только переменные типа одного .
Вы можете:
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) { ... }