2011-07-03 6 views
0

代理人の配列にToStringメソッドを追加することはできますか?もしそうなら? - 、文字列としてtoStringメソッドハンドルとしてC#-delegate配列 - 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); 

エラーメッセージが「文字列Class.ToString()」である:ここで私が書いたコードですdelagateに追加しますか?

+0

は、同じ時間で通過しようとしているこれら二つの方法はありますか? 1つのTaskオブジェクトをインスタンス化する方法や、Task []配列に項目を追加する方法ではありません... – BoltClock

答えて

1

構文を修正したと仮定すると、解決策はToStringの最後から()を削除することです。メソッドに基づいてデリゲートを作成するには、その名前を付けるだけです。

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

上記コードは実際にはコンパイルされません。あなたは、関数名と一緒にオブジェクト参照を渡す必要があるので、のToString()は、静的メソッドではありません。

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

ありがとうございます - 私はそれを試して、別のメッセージ "(paramater)Course italianCook" "メソッド名が期待されました" ....? ? – Julesyw

+0

こんにちはitalianCookはCourseクラスとオブジェクトのインスタンスです - 上のようにまだ動作しませんか? – Julesyw

+0

あなたのコードはどのようになっていますか? BoltClockが述べたように、現在の構文は正しくありません。 – dlev

関連する問題