2012-01-21 19 views
10

कृपया मुझे बताएं कि क्यों पैरामीटरेटेड थ्रेडस्टार्ट कक्षा केवल उस विधि को अनुमति देती है जो केवल System.object तर्क प्रकार में होती है।पैरामीटरेटेड थ्रेडस्टार्ट केवल ऑब्जेक्ट पैरामीटर की अनुमति क्यों देता है?

public class MainThreadTest 
{ 
    public static void Main(string[] args) 
    { 
     Thread T = new Thread(new ParameterizedThreadStart(DisplayYOrX)); 
     T.Start("X"); 

     DisplayYOrX("Y"); 
    } 

    static void DisplayYOrX(object outValue) 
    { 
     string Parameter = (string)outValue; 

     for(int i=0; i<10; i++) 
      Console.Write(Parameter); 
    } 
} 

मैं इस बारे में क्यों जानना चाहता हूं कि मैं फिर से टाइप कास्ट सिंटैक्स का उपयोग नहीं करना चाहता हूं।

string Parameter = (string)outValue; 

उत्तर

15

सीमा के लिए कारण यह है कि ThreadStart एक सामान्य प्रतिनिधि नहीं है और इसलिए यह एक object आसपास गुजर के ही लायक है। यह लैम्ब्डा का उपयोग करके काम करने के लिए काफी आसान है, जहां आप सीधे मूल्य पास करते हैं।

public static void Main(string[] args) { 
    ThreadStart start =() => { 
    DisplayYOrX("X"); 
    }; 
    Thread t = new Thread(start); 
    t.Start(); 

    ... 
} 

static void DisplayYOrX(string outValue) { 
    ... 
} 

के लिए सी # 2,0

public static void Main(string[] args) { 
    ThreadStart start = delegate { 
    DisplayYOrX("X"); 
    }; 
    Thread t = new Thread(start); 
    t.Start(); 

    ... 
} 
+0

मैं डेवलपर हैं जो 2.0 .net ढांचे का उपयोग के लिए के रूप में लगता है, संस्करण, लैम्ब्डा उपयोग करने के लिए मुश्किल है। क्या मैं सही हूँ ? –

+0

@ फ्रैंक मैंने अभी एक संस्करण शामिल करने के लिए अपना उत्तर अपडेट किया है जो 2.0 सी # कंपाइलर के साथ काम करेगा। नोट: लैम्ब्डा सिंटैक्स का उपयोग 2.0 ढांचे में भी मान्य है बशर्ते आप सी # 3.0 या उच्च संकलक का उपयोग करें। किसी भी तरह से, मैंने जो दूसरा नमूना रखा है, वह सबकुछ सी # 2.0 और – JaredPar

+0

के साथ काम करेगा, मैं वास्तव में जिस तरह से कहा था कि हम 2.0 ढांचे में लैम्ब्डा सिंटैक्स का उपयोग कर सकते हैं। तो, क्या आप कृपया मुझे बता सकते हैं कि हम इसे कैसे कर सकते हैं। कोई संदर्भ लिंक? –

संबंधित मुद्दे

 संबंधित मुद्दे