2010-11-22 26 views
25

Tôi đang sử dụng một đại biểu vô danh trong mã của tôi gọi ví dụ chức năng này:Sử dụng các loại trở lại khoảng trống với Func mới <T, TResult>

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

Các đại biểu trông như thế này:

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

Câu hỏi của tôi là: làm cách nào để chỉ định loại trả lại void cho TResult? Sau đây không hoạt động:

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

Trả lời

42

Nếu không có kiểu trả về, bạn muốn Action<int,string>:

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

hoặc chỉ:

Action<int, string> del = OtherFunction; 
6

Bạn cần phải sử dụng mã Action < T> nếu bạn muốn trả về void.

3

Bạn cần hành động < T> nếu bạn không muốn trở về một cái gì đó

0

Sử dụng Action Thay vì Func nếu bạn không cần bất kỳ giá trị trả về

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(); 
      } 
     } 
    } 
Các vấn đề liên quan