2011-01-03 5 views
1

古いC/C++プログラマとして、グローバルintカウンタを のすべてのMY名前空間とクラスに維持したいと考えています。C#extern int?クラスと名前空間でグローバルなvarを作成するにはどうすればよいですか?

public static extern int EventCount; 

動作しません。 VS2010コンパイラは私にextern intを持たせません。 DLLImportの場合でもVS2010は文句

[DllImport ("SilverlightApplication37.dll")] 
public static extern int EventCount; 

Error 1 The modifier 'extern' is not valid for this item  

は、どのように私はすべての間でグローバル int私のコードを持っているのですか?

乾杯!

dr.K

答えて

0

public static int EventCount;トリックを行う必要があります。

+0

テスト...私はそうは思わないが、私はそうは知らない。 –

3

このようなことはありません。データを保持するために、C#にはフィールド、プロパティ、ローカル変数があります。あなたは、静的クラスを作成して、プロパティを作成し、このようにすることができます

public static class GlobalData 
{  
    public static int EventCount { get; set; } 
} 
+0

yuck。今それで微妙に変化する。 –

+0

@drさて、C#はオブジェクトに関するものです。 C#を書くためには、C#を考える必要があります。私はC/C++開発者によって書かれたC#コードをたくさん見てきましたが、C#があなたに与える偉大なものをどのように活用するのか分からず、プログラミング上の世界のビジョンを強制しようとしたC#で。 C#でコードを書く前に、例から学びましょう。 C#と思う人から学び、あなたの人生はもっと楽しく簡単になります。 –

+0

しよう...私はそれで微妙にするつもりです。しかし、私がしたいことは、まったく鈍ったり奇妙ではありません。 –

0

私は直接のC#を経由してCのDLL内のグローバル変数にアクセスするための解決策を見つけることができませんでした。しかし、dllソースコードにアクセスできる場合は、グローバルにアクセサ関数を追加できます。

あなたが持っているあなたのCライブラリ内の場合:

__declspec(dllexport) extern int EventCount; 

あなたが追加する必要があります。

__declspec(dllexport) int __cdecl getEventCount(void); 

int __decl getEventCount(void) { 
    return EventCount; 
} 

その後、あなたのC#コードのどこかで、あなたのようなものが必要になります。

[DllImport("SilverlightApplication37.dll", CallingConvention = CallingConvention.Cdecl)] 
public static extern Int32 getEventCount(); 
1

私がやりたいことは、グローバル変数を格納する静的フィールドを持つ新しい静的クラスを作成することです。常に「GlobalValues」などと呼ばれています。

関連する問題