Я пытаюсь создать небольшое тестовое приложение для моего босса, однако созданный мной код, имитирующий то, что он пытается осуществить, не работает.
for (int i = 0; i < 5000; i++)
{
((IList<string>) obj2.Stuff).Add("Iteration " + i.ToString());
}
Я пытаюсь осуществить все это в одной строке, потому что именно так его код выглядел на днях в фреймворке, над которым мы работаем.В любом случае, когда приведенный выше код выполняется, я получаю сообщение об ошибке во время выполнения, в котором говорится, что «Коллекция была фиксированного размера».И когда я пытаюсь привести к списку вместо IList, я получаю InvalidCastException, говорящую «Невозможно привести объект типа 'System.String []' к типу System.Collections.Generic.List`1 [System.String] '. "
У кого-нибудь есть идеи, как я могу выполнить однострочное приведение, чтобы добавить элемент в IEnumerable или помочь мне найти способ обойти две ошибки, которые я продолжаю получать?Заранее спасибо.
РЕДАКТИРОВАТЬ (19.04.2011 10:49 EST) Я добавляю больше кода, чтобы помочь людям - вероятно, следовало бы сделать это раньше.Извините.
Program.cs:
#region Cast Test
Class1 obj2 = new Class1();
obj2.Stuff = Enumerable.Empty<string>();
Console.WriteLine("Cast - Start Time: " + 0 + "ms");
Stopwatch stopwatch2 = new Stopwatch();
stopwatch.Start();
for (int i = 0; i < 5000; i++)
{
((IList<string>) obj2.Stuff).Add("Iteration " + i.ToString());
}
stopwatch2.Stop();
Console.WriteLine("Cast - Stop Time: " + stopwatch2.ElapsedMilliseconds.ToString() + "ms");
#endregion
Class1.cs:
public class Class1
{
private IEnumerable<string> stuff;
public IEnumerable<string> Stuff
{
get { return stuff; }
set { stuff = value; }
}
}