Ваша функция принимает параметр по ссылке (lstProcessingMessages
), что недопустимо для Func(Of T1, T2, T3, T4)
, которому вы пытаетесь присвоить его.
Насколько я знаю, делегат Func
не поддерживает "по ссылке" в качестве аргумента типа.
static void Main()
{
Func<int, int> myDoItFunc1 = DoIt; // Doesn't work because of ref param
Func<int, int> myDoItFunc2 = DoItFunc; // Does work
}
public static int DoItFunc(int i)
{
return DoIt(ref i);
}
public static int DoIt(ref int i)
{
return 0;
}
Но почему вы все равно передаете lstProcessingMessages
по реф? Это ссылочный тип. Вы ожидаете полностью заменить ссылку в списке, или вы могли бы просто очистить и заполнить вместо этого?
static void Main()
{
var myList = new List<int>();
AddToMyList(myList);
// myList now contains 3 integers.
ReplaceList(myList);
// myList STILL contains 3 integers.
ReplaceList(ref myList);
// myList is now an entirely new list.
}
public static void AddToMyList(List<int> myList)
{
myList.Add(1); // Works because you're calling "add"
myList.Add(2); // on the *same instance* of my list
myList.Add(3); // (object is a reference type, and List extends object)
}
public static void ReplaceList(List<int> myList)
{
myList = new List<int>();
}
public static void ReplaceList(ref List<int> myList)
{
myList = new List<int>();
}