【问题标题】:using a return view of two delegate function in another delegate function in same class in c#在 c# 的同一类中的另一个委托函数中使用两个委托函数的返回视图
【发布时间】:2017-05-04 05:08:40
【问题描述】:

我在一个类中定义了 3 个委托函数

public func<datetime,string>A=>str1 { }
public func<datetime,string>B=>str2 { }
public func<datetime,string>C=>str3
{
    return a+b; 
}

如何在 c 函数中调用 a,b,因为函数 c 中的 return 是错误的?

【问题讨论】:

  • 你的代码没有意义。尝试对问题提供完整且清晰的解释。准确地描述您期望发生的事情以及会发生的事情。不是一些模糊的描述,需要我们从没有实现它的代码中找出意图。
  • 这还能编译吗?
  • @jmcilhinney myproblem 只是我不知道如何调用委托函数。它不需要额外的代码,因为在我的描述中我使用了它的函数名称和它的参数类型
  • @HosseinNarimaniRad 不,当我在 C 函数中仅通过它们的名称调用 A 和 B 函数时,它不会编译,因为我写“return A+B”会在下面显示一条红线,正如你所知道的那样不正确
  • 你可以先让它成为真正的代码而不是伪代码——str1 是什么? str2 是什么?您是否打算将 AB 用作属性或其他内容?为什么你不为正确的大写而烦恼?这与 ASP.NET 有什么关系? (您没有在代码中使用任何特定于 ASP.NET 的内容...)请花更多时间清楚地解释您的问题。

标签: c# asp.net asp.net-mvc delegates


【解决方案1】:

看到您提供的代码由于多种原因无法编译。要调用 AB 方法,您必须正确调用它并传递以下参数:

public static Func<DateTime, string> A = (date) => { return date.ToString(); };
public static Func<DateTime, string> B = (date) => { return date.ToString(); };
public static Func<DateTime, string> C = (date) => { return A(date) + B(date); };

static void Main(string[] args)
{
    var date = DateTime.Now;
    Console.WriteLine(C(date));
}

看到我还添加了static,因为没有它你会得到错误:

字段初始化器不能引用非静态字段、方法或属性Program.A

【讨论】:

  • 虽然我可能会将它们设为属性而不是公共字段...(然后编辑您的答案以明确它们是字段,而不是方法...)
  • @JonSkeet - 你能详细说明一下,以便我更正我的答案吗?
  • 详细说明哪一部分?您当前正在定义字段 - 我建议将它们设为公共只读属性,例如public static Func&lt;DateTime, string&gt; A { get; } = date =&gt; date.ToString(); 等。然后将 A 和 B 称为委托而不是方法,因为它们不是方法。
猜你喜欢
  • 1970-01-01
  • 2015-12-08
  • 1970-01-01
  • 1970-01-01
  • 2018-01-01
  • 1970-01-01
  • 2010-10-29
  • 1970-01-01
  • 2011-04-07
相关资源
最近更新 更多