【问题标题】:C# -delegate array - how to add tostring methodsC# -delegate array - 如何添加 tostring 方法
【发布时间】:2011-07-03 01:06:55
【问题描述】:

是否可以将 ToString 方法添加到委托数组中?如果有怎么办??这是我写的代码:

public delegate string Task();

        public static void Main(string[] args)
    {
        ArrayList studentArray = new ArrayList();
        Course italianCook = new ItalianCookCourse { Teacher = "Ben Hodd" };
        Course seafoodCook = new SeafoodCookCourse { Teacher = "Harry Cotter"};
        Course sewingCourse = new SewingCourse
        {
            Teacher = "Margaret Mair",
            ChargePerStudent = scFee,
            CostPerStudent = 100.00m,
        };
        Course creativeWrite = new CreativeWritCourse { Teacher = "Mary Smith };
        Course businessWrite = new BusinessWritCourse { Teacher = "Mary Smith" };
        Task[] tasks = new Task(italianCook.ToString, seafoodCook.ToString, sewingCourse.ToString);

错误信息是“string Class.ToString()” - “Method name expected”

由于tostring方法处理为字符串,是否可以添加到delagate中??

【问题讨论】:

  • 你试图同时通过这两种方法吗?这不是您实例化单个 Task 对象或将项目添加到 Task[] 数组的方式...

标签: c# .net delegates tostring


【解决方案1】:

假设您修正了语法,解决方案是从 ToString 的末尾删除 ()。要基于方法创建委托,只需提供其名称即可。

Task[] tasks = new Task[] { Class1.ToString, Class2.ToString }

注意上面的代码实际上并没有编译。 ToString() 不是一个静态方法,所以你需要传入一个对象引用和函数名:

object o = new object();
Task[] tasks = new Task[] { o.ToString };

【讨论】:

  • 谢谢 - 我确实尝试过并收到另一条消息“(参数)Course italianCook”“预期方法名称”......??
  • 嗨 - italianCook 是 Course 类的一个实例和一个对象 - 如上所述它仍然不起作用??
  • 你的代码现在是什么样子的?正如 BoltClock 提到的,您当前的语法不正确。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-11
  • 1970-01-01
  • 1970-01-01
  • 2013-04-18
  • 1970-01-01
  • 1970-01-01
  • 2016-02-13
相关资源
最近更新 更多