По сути, я пытаюсь создать делегата, которому я хочу передать функцию методу, который возьмет список объектов продукта и выполнит определенные вычисления.
К сожалению, я получаю сообщение об ошибке
main.cs (11,40): ошибка CS0120: ссылка на объект требуется для доступа к элементу c не-stati `MainClass.MyDelegate (System.Collections.Generi) c .List) 'Ошибка компиляции: 1 ошибка (ов), 0 статусов выхода компилятора предупреждений 1
Мой вопрос: почему я пытаюсь передать список делегату - что я не так?
Спасибо и всего наилучшего
using System;
using System.Collections.Generic;
using System.Collections;
class MainClass {
public static void Main (string[] args) {
Console.WriteLine ("Hello World");
MyCart MyBasket = new MyCart();
MyBasket.Initialize();
//Console.WriteLine(MyBasket.basket.Count);
MyBasket.BuyItem("Iphone", 300.3m, MyDelegate );
}
public void MyDelegate (List<Product> e){
// this is where i am performing my delegate
if (e.Count > 2)
{
Console.WriteLine($"This is delegate Talking our current Cart has more than 2 items inside, in fact the count is {e.Count}");
}
else
{
Console.WriteLine($"This is delegate Talking our current Cart has less than 2 items inside, in fact the count is {e.Count}");
}
}
}
public class MyCart
{
//public delegate void ObjectCheck(List<Product> basket) ;
public List<Product> basket = new List<Product>();
public delegate void ObjectCheck(List<Product> basket) ;
public void Initialize (){
// this is our Cart Class constructor
basket.Add(new Product { ItemName = "Book", ItemPrice = 4.9m });
basket.Add(new Product { ItemName = "Milk", ItemPrice = 3.5m });
}
public void BuyItem (string i, decimal p, ObjectCheck mymethod)
{
basket.Add(new Product {ItemName = i, ItemPrice = p});
mymethod(basket);
}
}