C # extern int?Как создать глобальную переменную для классов и пространств имен? - PullRequest
1 голос
/ 03 января 2011

Как старый программист на C / C ++, я хочу сохранить глобальный счетчик int все мои пространства имен и классов.

public static extern int EventCount;

не работает; компилятор VS2010 не даст мне иметь extern int. Даже с DLLImport.

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

VS2010 жалуется,

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

Итак, как мне использовать глобальный int для всего моего кода?

ура!

др.К

Ответы [ 4 ]

3 голосов
/ 03 января 2011

Нет такой вещи.Для хранения данных в C # есть поля, свойства и локальные переменные.Вы можете создать статический класс, а затем создать свойство, например:

public static class GlobalData
{    
    public static int EventCount { get; set; }
}
1 голос
/ 09 сентября 2013

Что я обычно делаю, так это создаю новый статический класс со статическими полями для хранения глобальных переменных.Он всегда называется «GlobalValues» или аналогичным.

0 голосов
/ 09 сентября 2013

Мне не удалось найти решение для прямого доступа к глобальной переменной в Cll dll через C #. Но, если у вас есть доступ к исходному коду 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();
0 голосов
/ 03 января 2011

public static int EventCount; должен сделать трюк.

...