2016-04-06 3 views
6

सी # में इस इंटरफेस के बराबर है?जावा 8 java.util.function के C# समकक्ष क्या है। ग्राहक <>?

उदाहरण:

Consumer<Byte> consumer = new Consumer<>(); 
consumer.accept(data[11]); 

मैं समारोह <> और कार्रवाई < आसपास खोज की है> लेकिन मुझे पता नहीं है ....

Consumer.accept के मूल जावा कोड() इंटरफेस सुंदर है सरल .. लेकिन मेरे लिए नहीं .. :-(

void accept(T t); 

    /** 
    * Returns a composed {@code Consumer} that performs, in sequence, this 
    * operation followed by the {@code after} operation. If performing either 
    * operation throws an exception, it is relayed to the caller of the 
    * composed operation. If performing this operation throws an exception, 
    * the {@code after} operation will not be performed. 
    * 
    * @param after the operation to perform after this operation 
    * @return a composed {@code Consumer} that performs in sequence this 
    * operation followed by the {@code after} operation 
    * @throws NullPointerException if {@code after} is null 
    */ 
    default Consumer<T> andThen(Consumer<? super T> after) { 
     Objects.requireNonNull(after); 
     return (T t) -> { accept(t); after.accept(t); }; 
    } 
+1

यह जावा कोड है और हम ग # programer कर रहे हैं और इस इंटरफेस हमें करने के लिए सरल नहीं है:) किस यह cosumer करते हैं? –

+2

कोई भी प्रतिनिधि प्रकार जो एक पैरामीटर लेता है और कोई मान वापस नहीं करता है वह उम्मीदवार होगा। 'एक्शन 'उनमें से एक है। –

+0

धन्यवाद डेनिस, लेकिन मैं मिथोड स्वीकार कैसे कर सकता हूं? –

उत्तर

6

खैर अगर इस उद्धरण here से लिया सही है तो यह में Action<T> प्रतिनिधि के बराबर है "उपभोक्ता इंटरफ़ेस एक ऑपरेशन है कि एक ही इनपुट तर्क स्वीकार करता है और कोई परिणाम देता है प्रतिनिधित्व करता है" सी#;

उदाहरण के लिए इस जावा कोड

import java.util.function.Consumer; 

public class Main { 
    public static void main(String[] args) { 
    Consumer<String> c = (x) -> System.out.println(x.toLowerCase()); 
    c.accept("Java2s.com"); 
    } 
} 

सी # करने के लिए बदल हमें देना होगा:

using System; 

public class Main 
{ 
    static void Main(string[] args) 
    { 
    Action<string> c = (x) => Console.WriteLine(x.ToLower()); 

    c.Invoke("Java2s.com"); // or simply c("Java2s.com"); 
    } 
} 
1

Consumer<T>Action<T> औरसे मेल खाती है 210 विधि एक अनुक्रमक ऑपरेटर है। आप एक्सटेंशन विधि के रूप में andThen को परिभाषित कर सकते हैं उदा।

public static Action<T> AndThen<T>(this Action<T> first, Action<T> next) 
{ 
    return e => { first(e); next(e); }; 
} 
संबंधित मुद्दे