2010-11-22 11 views
25

मैं इस उदाहरण समारोह बुला मेरी कोड में एक गुमनाम प्रतिनिधि उपयोग कर रहा हूँ:नई समारोह के साथ शून्य वापसी प्रकार का उपयोग करना <T, TResult>

public static int TestFunction(int a, int b) { 
    return a + b; 
} 

प्रतिनिधि इस तरह दिखता है:

var del = new Func<int, int, int>(TestFunction); 

मेरे सवाल यह है: आप TResult के लिए वापसी प्रकार कैसे निर्दिष्ट करते हैं? निम्नलिखित काम नहीं करता:

public static void OtherFunction(int a, string b) { ... } 
var del = new Func<int, string, void>(OtherFunction); 

उत्तर

42

अगर कोई वापसी प्रकार है, तो आप Action<int,string> हैं:

var del = new Action<int, string>(OtherFunction); 

या बस:

Action<int, string> del = OtherFunction; 
6

आप कार्रवाई < टी का उपयोग करना होगा> अगर आप शून्य वापस करना चाहते हैं।

3

आप कार्रवाई < टी की जरूरत है> अगर आप कुछ वापस जाने के लिए

0

समारोह के बजाय कार्रवाई का प्रयोग करें अगर आप किसी भी वापसी मान

public void InvokeService<T>(Binding binding, string endpointAddress, Action<T> invokeHandler) where T : class 
    { 
     T channel = FactoryManager.CreateChannel<T>(binding, endpointAddress); 
     ICommunicationObject communicationObject = (ICommunicationObject)channel; 

     try 
     { 
      invokeHandler(channel); 
     } 
     finally 
     { 
      try 
      { 
       if (communicationObject.State != CommunicationState.Faulted) 
       { 
        communicationObject.Close(); 
       } 
      } 
      catch 
      { 
       communicationObject.Abort(); 
      } 
     } 
    } 
की जरूरत नहीं है नहीं करना चाहती
संबंधित मुद्दे