РИСКОВАННАЯ: В приведенном ниже примере немного надуманным, но я стараюсь, чтобы узнать о Делегаты и События в C#.Использование Делегаты и события с ArrayLists в C#
Код ниже состоит из двух классов: класс MyClass содержит ArrayList как свойство, член делегата и член обработчика событий. MainClass имеет две функции: main() и функция, которую вызывает делегат, вызываемый theHandler.
Мое намерение, когда я .Add к ArrayList реализованного в объекте MyClass: ClassObj в сделай то время как цикл, обработчик событий вызывает theHandler функции и записывает в консоль, что было добавлено. Однако он не вызывает функцию Handler.
Я знаю, что ArrayList обновляется, и когда я с помощью замолвите (строку) вместо ArrayList я смог получить рабочий процесс делегата/событие.
public class myClass{
public delegate void classEventHandler(ArrayList anArray);
private ArrayList strArray = new ArrayList();
public event classEventHandler arrayChanged;
public ArrayList arrayVal{
get{
return strArray;
}
set{
this.strArray.Add(value);
this.arrayChanged(strArray);
}
}
}
class MainClass
{
public static void Main (string[] args)
{
myClass ClassObj = new myClass();
ClassObj.arrayChanged += theHandler;
string str;
do{
str = Console.ReadLine();
ClassObj.arrayVal.Add(str);
}while(!str.Equals("exit"));
Console.ReadLine();
}
public static void theHandler(ArrayList newArray){
foreach(object o in newArray){
Console.WriteLine("{0}", o.ToString());
}
}
}
Я думаю, что это имеет какое-то отношение ArrayLists используются как свойства класса, но я не уверен.
Как ArrayList даже в вашем словаре .Net больше? –
Не используйте ArrayList. Вы должны использовать общие коллекции, такие как «Список». –
SLaks
@AustinSalonen Хех, поскольку мой словарный запас сейчас всего несколько дней, может быть, я смогу получить пропуск на этот раз. Спасибо, хотя, теперь я знаю, что ArrayLists отменены. –