Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > Как правильно объявлять переменные (String, array)


Автор: useronforum 23.4.2009, 04:10
Как правильно объявлять переменные в Visual C++ .NET?

В справке в разных примерах по-разному пишется.
(Вариант №2 чаще встречается для строк,
а вариант №3 чаще встречается для массивов)

1. String ^fileName1 = "abcde";
2. String^ fileName1 = "abcde";
3. String^fileName1 = "abcde";

1. array<Byte> ^a1 = gcnew array<Byte>(32);
2. array<Byte>^ a1 = gcnew array<Byte>(32);
3. array<Byte>^a1 = gcnew array<Byte>(32);

(Все эти варианты работают, но как правильнее писать)

Я думаю, что правильнее вариант №1, так как
при объявлении нескольких переменных:
String^ a1, a2; - ошибка
String ^a1, a2; - ошибка
String ^a1, ^a2; - нет ошибок

Автор: Grok 23.4.2009, 13:20
если работают, тогда все три варианта правельные )
но если разобрать семантически то получим:
1 String ^fileName1 = String (^fileName1);
2 String^ fileName1 = (String^) fileName1;
для меня лично более адекватной является вторая запись, где переменной является  fileName1, которая имет тип данных указатель на строку 

Автор: PashaPash 23.4.2009, 13:38
Жестокие у вас загоны smile
Правильнее вариант с String ^fileName1, т.к. ^ относится именно к конкретной переменной. Но даже в MSDN в статье по ^ (Handle to Object on Managed Heap) смешаны все 3 стиля smile

Автор: Partizan 23.4.2009, 14:26
PashaPash, потому что примеры там пишут студенты smile

Автор: useronforum 23.4.2009, 14:45
Нашёл
"C++ Programming Style Guidelines" (http://geosoft.no/development/cppstyle.html)

Цитата
51. C++ pointers and references should have their reference symbol next to the type rather than to the name.  
float* x; // NOT: float *x; 
int& y;   // NOT: int &y;
 
The pointer-ness or reference-ness of a variable is a property of the type rather than the name. C-programmers often use the alternative approach, while in C++ it has become more common to follow this recommendation.  

Автор: -Mikle- 23.4.2009, 14:48
Цитата(PashaPash @  23.4.2009,  16:38 Найти цитируемый пост)
Правильнее вариант с String ^fileName1, т.к. ^ относится именно к конкретной переменной

Однако приведение к типу будет выглядеть так: String^ var1 = (String^)var2;

Автор: Partizan 23.4.2009, 15:05
useronforum, это для native C++.... и то эти гайдлайны могут оверрайдиться на уровне корпоративных кодинг гайдлайнов/стандартов. либо на уровне команды...

Автор: PashaPash 23.4.2009, 16:03
Partizan, это и есть корпоративный станадарт какого-то "геософта".

Добавлено через 5 минут и 16 секунд
When declaring a pointer variable or argument, you may place the asterisk adjacent to either the type or to the variable name.
http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml#Pointer_and_Reference_Expressions

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)