2017-05-04 22 views
2

我在一個類中定義3層代表的功能類似於使用兩種代表功能的返回視圖中在c#在同一類另一個委託功能

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是錯誤的?

+3

您的代碼是沒有感。嘗試提供問題的完整和清晰的解釋。準確描述你期望發生的事情,確切地說,發生了什麼。不是一些模糊的描述,需要我們從沒有實現它的代碼中找出意圖。 – jmcilhinney

+0

這甚至編譯? –

+0

@jmcilhinney myproblem只是我不知道如何調用一個委託函數。它不需要額外的代碼,因爲在我的描述我使用它的功能名稱及其參數類型 –

回答

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,因爲沒有你得到的錯誤:

A field initializer cannot reference the non-static field, method, or property Program.A

+0

雖然我可能會讓他們的屬性而不是公共領域...(然後編輯你的答案,以清楚說明他們是領域,而不是方法...) –

+0

@JonSkeet - 你能否詳細說明我可以糾正我的答案? –

+0

細說哪個部分?您目前正在定義字段 - 我建議將它們設爲公共只讀屬性,例如'public static Func A {get; } =日期=> date.ToString();'等,然後指A和B作爲代表而不是方法,因爲它們不是方法。 –

相關問題