问题描述
美好的一天,我对委托的工作方式很陌生,需要一些帮助,这是我目前的代码 这是我的主类中的代码。
using System;
using System.Collections.Generic;
using System.Linq;
namespace PROG6211_Taks_1_Tarisai_Gonah_18028480
{
class Program
{
public void notify(double exp)
{
Calculate cal1 = new Calculate();
cal1.totalExpenses = cal1.totalExpense + (cal1.carpayMonth + cal1.repayMonth);
if ((cal1.totalExpenses / cal1.grossIncome) * 100 > 75)
{
Console.WriteLine("Your expenses exceed 75% of gross Income");
}
}
static void Main(string[] args)
{
Calculate cal2 = new Calculate();
cal2.expenses = new cal2.expenses(notify);
var mydelegate = new expenses(cal2.notify);
在我的主课中,我试图调用试图让委托运行,但我正在努力解决我无法为其创建方法的问题。 这是我的另一堂课:
public delegate void expenses(double totalExpenses);
public void notify(expenses TotalExpenses)
{
TotalExpenses(0);
totalExpenses = totalExpense + (carpayMonth + repayMonth);
if ((totalExpenses / grossIncome) * 100 > 75)
{
Console.WriteLine("Your expenses exceed 75% of gross Income");
}
所以我创建了一个方法来执行我需要的功能我没有显示完整的代码,因为它的代码太多但是我没有问题,我的问题是让我的另一个类中的委托在我的主方法中运行.
我尝试使用这种结构:
MyClass myClass = new MyClass();
MyClass.delgatename object = new MyClass.delegatename(method);
myClass.methodinotherclass(object);
这是我能最好的描述我的问题希望你明白:)
解决方法
如果可能,您可以在类之外声明委托类型。 有点像下面 -
public delegate void Expenses(double totalExpenses);
public class MyFamily
{
public void ExpensesImplement(double t)
{
Console.WriteLine(t);
}
}
public class MyOtherFamily
{
public new void ImplementExpenses(double t)
{
Console.WriteLine(t);
}
}
public class GFG
{
// Main method
static public void Main()
{
MyFamily mf = new MyFamily();
MyOtherFamily mm = new MyOtherFamily();
Expenses expenses = new Expenses(mf.ExpensesImplement);
expenses += mm.ImplementExpenses;
expenses(10);
}
}
}