请教: CLR中List<String^>^ 使用问题
删除List<String^>^中重复的元素。。。。自己折腾了俩天,删除List<String^>^中重复的元素,功能实际了。语法却不理解了。。。。
程序代码:
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { String^ str1 = "00\r\n99\r\n11\r\n88\r\n22\r\n77\r\n33\r\n66\r\n44\r\n55\r\n55\r\n44\r\n66\r\n33\r\n77\r\n22\r\n88\r\n11\r\n99\r\n00"; array<String^>^ arrstr = Regex::Split(str1, "\r\n"); List<String^>^ liststr = gcnew List<String^>((Generic::IEnumerable<String^>^)arrstr); for each(auto i in liststr) textBox1->Text += i + "\r\n"; textBox1->Text += "\r\n"; for (short i = 0; i < liststr->Count; i++) { String^ Samples = liststr[i]; for (short j = liststr->Count - 1; j > 0; j--) if (ReferenceEquals(Samples, liststr[j])) liststr->RemoveAt(j); } for each(auto i in liststr) textBox1->Text += i + "\r\n"; }
功能实现了,但问题???
for (short i = 0; i < liststr->Count; i++)
{
String^ Samples = liststr[i];
for (short j = liststr->Count - 1; j > 0; j--)
if (ReferenceEquals(Samples, liststr[j]))
liststr->RemoveAt(j);
}
for (short j = liststr->Count - 1; j > 0; j--)
为什么不是
for (short j = liststr->Count - 1; j > i; j--)
按照我的理解
for (short j = liststr->Count - 1; j > 0; j--)
liststr最后只能剩下"00"一个元素。
如果使用
for (short j = liststr->Count - 1; j > i; j--)
结果没有删除任何一个元素。
第二个问题,如何初始化一个“空”List<String^>^ liststr;
如果使用:
List<String^>^ liststr;
liststr->Add("AABB");
就会报错,大概意思是内存中没有为liststr分配空间。。。。
我的方法:
String^ str1 = "00\r\n11";
array<String^>^ arrstr = Regex::Split(str1, "\r\n");
List<String^>^ liststr = gcnew List<String^>((Generic::IEnumerable<String^>^)arrstr);
liststr->Clear();
然后再进行添加
liststr->Add("AABB");
如何直接,初始化一个“空”List<String^>^ liststr。。。。
[此贴子已经被作者于2023-3-14 15:48编辑过]