Объявить 2 типа внутри оператора using, дает ошибку при компиляции?
Я хочу использовать эту строку кода:
using (ADataContext _dc = new ADataContext(ConnectionString), BDataContext _dc2 = new BrDataContext(ConnectionString)){ // ...}
Это дает ошибку при компиляции:
нельзя использовать более одного типа в for, using, fixed или declartion заявление.
Я думал, что это возможно? MSDN говорит, что это:http://msdn.microsoft.com/en-us/library/yh598w02%28VS.80%29.aspx В примере кода MSDN используется шрифт, который является классом и, следовательно, ссылочным типом, а также двумя моими DataContext занятия.
что здесь пошло не так? Чем моя попытка отличается от образца MSDN?
3 ответов
MSDN объявила экземпляры двух объектов одного типа. Вы объявляете несколько типов, следовательно, сообщение об ошибке, которое вы получили.
Edit: чтобы пойти все "Эрик Липперт" на нем, раздел 8.13 спецификации языка говорит:
когда приобретение ресурса принимает форму объявления локальной переменной, можно получить несколько ресурсов данного типа. Оператор using формы
using (ResourceType r1 = e1, r2 = e2, ..., rN = eN) statement
is точно эквивалентно последовательности вложенных операторов 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
оператор приобретения ресурсов может быть объявлением. Объявление может объявлять только переменные один тип.
вы можете сделать:
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) { ... }