7

このコード行を使用したい:

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

これにより、コンパイル エラーが発生します。

for、using、fixed、または宣言ステートメントで複数の型を使用することはできません。

これは可能だと思いましたか?MSDN は次のように述べています: http://msdn.microsoft.com/en-us/library/yh598w02%28VS.80%29.aspx MSDN のサンプル コードでは、フォントが使用されています。私の 2 つの DataContext クラス。

ここで何がうまくいかなかったのですか?私の試みは MSDN サンプルとどう違うのですか?

4

3 に答える 3

13

MSDN は、同じ型の 2 つのオブジェクトのインスタンスを宣言しました。複数の型を宣言しているため、受け取ったエラー メッセージです。

編集:すべての「Eric Lippert」を実行するには、言語仕様のセクション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 の例と一致する type ではなく、特定の type のリソースであるということです。

于 2010-03-25T23:11:19.537 に答える
12

代わりにこれを行う

using (ADataContext _dc = new ADataContext(ConnectionString))
using (BDataContext _dc2 = new BrDataContext(ConnectionString))
{ // ...}
于 2010-03-25T23:13:00.313 に答える
6

リソース取得ステートメントはusing、宣言にすることができます。宣言では、 1 つの型の変数のみを宣言できます。

できるよ:

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) { ... }
于 2010-03-25T23:11:07.503 に答える