2013-02-09 92 views
5

मैं सोच रहा था कि क्या सी # प्रतिनिधि एक समान मात्रा में स्थान लेते हैं जो सी पॉइंटर्स (4 बाइट्स) किसी विधि से गुजरते समय करते हैं।सी # प्रतिनिधि पैरामीटर आकार

संपादित करें

प्रतिनिधि केवल विधियों को इंगित करते हैं? वे structs या कक्षाओं को इंगित नहीं कर सकते हैं मैं सही हूँ।

उत्तर

0

हां, प्रतिनिधि केवल विधियों को इंगित करते हैं, एक या अधिक। पैरामीटर विधि के समान होना चाहिए।

public class Program 
{ 
public delegate void Del(string message); 
public delegate void Multiple(); 

public static void Main() 
{ 
    Del handler = DelegateMethod; 
    handler("Hello World"); 

    MethodWithCallback(5, 11, handler); 

    Multiple multiplesMethods = MethodWithException; 
    multiplesMethods += MethodOk; 


    Console.WriteLine("Methods: " + multiplesMethods.GetInvocationList().GetLength(0)); 

    multiplesMethods(); 
} 

public static void DelegateMethod(string message) 
{ 
    Console.WriteLine(message); 
} 

public static void MethodWithCallback(int param1, int param2, Del callback) 
{ 
    Console.WriteLine("The number is: " + (param1 + param2).ToString()); 
} 

public static void MethodWithException() 
{ 
    throw new Exception("Error"); 
} 

public static void MethodOk() 
{ 
    Console.WriteLine("Method OK!"); 

} 

}