Один вопрос спросить себя, как важный это должно иметь C#, а не VB.NET? При преобразовании крупного приложения возможно, необходимо просто обновить до VB.NET, который будет более дешевым.
существуют некоторые функции в VB6 без точного эквивалента в C# (обработка ошибок, позднее связывание и т.д.). Спросите себя, почему это стоит ручного усилия преобразовать тех, когда Вы могли перейти к VB.NET, который действительно поддерживает их.
И если Вы не верите мне (и ничей проголосовавший за мой ответ, рыдание рыдания!), возможно, Вы будете верить Francesco Balena и Dan Appleman (в книге , Перемещающейся в VB.NET ), кто соглашается со мной.
Если вы хотите определить глобальную переменную, не имеет значения, куда вы ее поместите (внутри или вне @implementation). В этом контексте static
означает, что переменная видна только из этого модуля компиляции (файла .m).
Существуют также статические переменные, которые определены в функциях. Они работают как глобальные переменные, но видны только из области действия функции.
Глобальные объекты могут перемещаться практически куда угодно; просто поместите его в любое место, которое имеет стилистический смысл. Лично я предпочитаю видеть глобальные переменные в верхней части исходных файлов.
Хотя вы можете поместить определение в файл заголовка, я не рекомендую этого делать. Ввод любого определения в файл заголовка может в дальнейшем привести к ошибкам компоновщика множественных символов. Если вам нужно несколько единиц компиляции, чтобы увидеть переменную, вы все равно не можете сделать ее статической
- вы '
Если он находится после блока @implementation
, то вы не можете использовать его в блоке @implementation
(если только он не объявлен в другом месте) используя extern
). Вот как я это делаю:
//Constants.h
extern BOOL MyConstantBool;
extern NSString* MyConstantString;
//Constants.m
#import "Constants.h"
BOOL MyConstantBool = YES;
NSString* MyConstantString = @"Hello, world!";
//SomeOtherFile.m
#import "Constants.h"
//you can now use anything declared in Constants.h