2009-05-12 2 views
18

Привет, как использовать цикл foreach в управляемом коде C++ с использованием vs2003.Как использовать foreach в C++ cli в управляемом коде

+1

И я только что нашел этот фантастический лакомый на блоге Jochen Kalmbach: скрытая переменная $ I содержит текущий индекс итерации. http://blog.kalmbach-software.de/2009/12/30/the-mystic-variable-i-during-for-each/ –

ответ

-7

Я не думаю, что VC++ имеет Еогеасп

+0

ну, есть std :: for_each и Boost.Foreach, и нормально для петли, поэтому я действительно не думаю, что вы совершенно правы там –

+1

Я не верю, что любой из них автоматически применим к IEnumerable. –

+0

Они, конечно же, не позаботятся об утилизации IEnumerable. – marklam

36

Я никогда не использовал его, но this MSDN article показывает общий синтаксис просто:

for each(Type t in IEnumerable) 
{ 

} 
+1

Это то же самое, что и C#, но с пробелом между ними и каждым. – Skizz

+1

в VS2005 это нормально, в VS2003 он дает erroe.i, не знаю, как это ведет себя так. – Cute

+1

Симпатичный, потому что он новый в Visual C++ (http://msdn.microsoft.com/en-us/library/xey702bw(VS.80).aspx), чтобы не путать с Managed Extensions для C++. –

1

Что-то вроде:

String^MyString = gcnew String("abcd"); 

for each (Char c in MyString) 

    Console::Write(c); 
+0

Приведите свои источники. –

10

Мэтью в основном правильный, но вот рабочий блок кода;

/////// 
array<Type^>^ iterate_me = gcnew array<Type^>(2); 
iterate_me[0] = Type::GetType("Type"); 
iterate_me[1] = Type::GetType("System.Int32"); 
/////// 

for each(Type^ t in iterate_me) 
    Console::WriteLine(t); 

изменения были типа является ссылкой класс, так что вы используете «Type ^» не «Type», и вам необходимо фактическое ссылку на объект (iterate_me) ...

+0

Управляемый C++ в VS 2003, к сожалению, сильно отличается от C++ .NET, который был представлен в VS 2005+. Для каждого блока не было. ** Управлять C++ ** следует избегать. C++ .NET отлично подходит для использования. – pickypg

+0

Ahhh right, название меня смутило, он читал «C++ cli ...» Я замалчивал ту часть, где он спрашивал о 2003. – RandomNickName42

+2

Не очень. Просто хотел удостовериться, что кто-нибудь, кто найдет это из Google/Bing, не спустится по темному пути развития управляемого C++. – pickypg

Смежные вопросы