2008-11-15 15 views
27

की नई कूल विशेषताएं जो आप देख रहे हैं सबसे अच्छी नई विशेषताएं क्या हैं, या आपने सुना है कि सी # 4.0 में रिलीज़ हो रहा है।सी # 4.0

उत्तर

2

डायनामिक कीवर्ड ऐसा लगता है कि यह आयरनआरबी या आयरनपीथन जैसे गतिशील भाषाओं के बीच अंतर को पुल कर सकता है, जो शायद माइक्रोसॉफ्ट मोनोकल्चर में अपना गोद लेने में मदद करेगा ... जो मुझे उत्तेजित करता है।

हालांकि मैं यह द्वारा intrigued रहा हूँ, मैं भी चिंतित है कि यह overused किया जाएगा जेनेरिक्स और LINQ, SQLCLR, आदि :) की तरह,

+1

मैं भी गतिशीलता के अत्यधिक उपयोग के बारे में चिंतित हूं। उम्मीद है कि मैं शैली को चेकइन – CVertex

+5

जेनिक्स पर अधिक उपयोग कर सकता हूं? मैं LINQ के बारे में कभी-कभी सहमत हूं ... –

29

गतिशील सामान लगता है शांत अगर आप इसे लेकिन मैं की जरूरत है कर रहा हूँ इसे अक्सर इस्तेमाल करने की उम्मीद मत करो।

प्रतिनिधियों और इंटरफेस के लिए सामान्य विचरण समान है - विचरण की कमी इस समय सिर में दर्द है, लेकिन स्थानों पर जहां यह एक दर्द है के कई सी # में सीमित विचरण उपलब्ध द्वारा कवर नहीं किया जाएगा 4.

COM विशेषताएं विशेष रूप से मुझे रूचि नहीं देती हैं - मुझे वास्तव में उन चीज़ों पर अधिक संभाल लेना चाहिए जो वे हैं। जब अपरिवर्तनीय प्रकार के निर्माण

वैकल्पिक और नाम वाले पैरामीटर एक बड़ा अंतर बना सकता है: निर्माता भार के की विशाल संयोजन बिना

Person p = new Person (name: "Jon", age: 32); 

: ऐसा लगता है जैसे वाक्य रचना सक्षम बनाता है। मैं केवल स्वचालित रूप से कार्यान्वित गुणों के रूप में अपरिवर्तनीय प्रकार लिखने के लिए थोड़ा और समर्थन पसंद करूंगा, लेकिन मुझे उम्मीद नहीं है कि हम उन्हें प्राप्त करेंगे। विशेष code contracts और parallel extensions में - मैं व्यक्तिगत रूप से वास्तव में .NET 4.0 के ढांचे सुविधाओं के एक जोड़े में अधिक रुचि रखते कर रहा हूँ (वे निश्चित रूप से इस समय प्रस्तावित सुविधा सूची में नहीं हैं।)

+3

इसका एक उदाहरण जोड़ने के लिए, देखें: http://marcgravell.blogspot.com/2008/11/immutability-and-optional-parameters.html –

+1

यह वीडियो जानकारीपूर्ण है आपके पास मारने के लिए एक घंटा है ... http://channel9.msdn.com/pdc2008/TL16/ – user10178

+3

कोड अनुबंध + 1 –

17

विधि पैरामीटर डिफ़ॉल्ट मान:

public void MyMethod1(string value1 = "test", int num1 = 10, double num2 = 12.2) 
{ 
    //... 
} 

इसके अलावा हो सकता है गुमनाम वापसी प्रकार:

public var MyMethod2() 
{ 
    // .. 
} 
+1

तो पैरामीटर डिफ़ॉल्ट मानों का मतलब है कि हम उन्हें इस तरह कॉल कर सकते हैं? obj.MyMethod1 ("परीक्षण", 1); आपकी उपलब्ध विधि के साथ काम करेंगे? – mxmissile

+1

वीबी.नेट से सी # में स्विच करते समय यह # 1 चीज याद आई थी। – MiffTheFox

+1

काम करेगा और चर इस तरह दिखेगा: value1 = "test", num1 = 1, num2 = 12.2 – Atmocreations

9

IDynamicObject, dynamic पीछे गोंद, कार्यावधि में एक कॉल की व्याख्या की अनुमति देता है।

यह आरईएसटी, एक्सएमएल, कॉम, DataSet, गतिशील भाषाओं और कई अन्य लोगों के स्वाभाविक रूप से अवांछित परिदृश्यों के लिए दिलचस्प है। यह के शीर्ष पर बने dynamic dispatch का कार्यान्वयन है।

बोझिल प्रतिबिंब अर्थशास्त्र के बजाय, चर dynamic के रूप में घोषित चर। सिल्वरलाइट से जावास्क्रिप्ट वस्तुओं के साथ काम करने की कल्पना:

dynamic obj = GetScriptObject(); 

HtmlPage.Window.Alert(obj.someProperty); 

सभी सी # वाक्यविन्यास समर्थित है (मेरा मानना ​​है कि):

public void WriteSomePropertyValue(object target) 
{ 
    Console.WriteLine((target as dynamic).SomeProperty); 
} 

public void WriteSomeMethodValue(object target, int arg1, string arg2) 
{ 
    Console.WriteLine((target as dynamic).SomeMethod(arg1, arg2)); 
} 

dynamic एक और उपकरण है:

HtmlPage.Window.Alert(obj.someMethod() + obj.items[0]); 

प्रतिबिंब अपने आप में एक बहुत क्लीनर लग रहा है टूलकिट में यह स्थैतिक बनाम नहीं बदलता है।गतिशील बहस, यह बस घर्षण को आसान बनाता है।

+4

पवित्र बकवास .... गतिशील वस्तुओं को कास्टिंग करने के बारे में सोचा नहीं था। यह प्रतिबिंब एक बकवास-टन आसान बनाता है! – Will

9
+0

मुझे नहीं पता कि मैं उन्हें शांत कहूंगा या नहीं। मेरे सहकर्मी उन्हें इतना दुर्व्यवहार करते हैं कि मेरी इच्छा है कि उन्हें हटा दिया जाएगा। –

+1

@AndrewHoffman कुछ भी उपयोगी रूप से उपयोगी है जिसमें दुर्व्यवहार की शक्ति है –

3

नहीं सख्ती से सी #, लेकिन नेट यहाँ टैग किए गए एक अच्छा BCL changes के बारे में लिंक भी है है के बाद से।

स्वयं के लिए नोट: मेरे Stopwatch.Restart() विस्तार विधि का नाम बदलने से पहले 4.0 जारी किया गया है :) अवश्य

3
  • सी # 2.0 -Generics (.नेट फ्रेमवर्क समर्थन को जोड़ा गया है, और सी # इस से लाभ हुआ); इटरेटर पैटर्न (उपज कीवर्ड); गुमनाम विधियां (प्रतिनिधि कीवर्ड), शून्य प्रकार, और शून्य कोलेसिंग ऑपरेटर (??)।
  • सी # 3.0 बेनामी प्रकार, विस्तार के तरीकों, वस्तु initializers, संग्रह initializers, परोक्ष टाइप स्थानीय चर (वर कीवर्ड), लैम्ब्डा भाव (=>), और LINQ क्वेरी अभिव्यक्ति पैटर्न।
  • सी # 4.0 वैकल्पिक पैरामीटर और नाम पर तर्क, गतिशील टाइपिंग (गतिशील प्रकार), बेहतर COM-इंटरॉप, और कॉन्ट्रा और सह-प्रसरण।
2

सी # 4,0

1) PLinq

2) नाम और वैकल्पिक पैरामीटर

3) लेज़ी

4) सह & कॉन्ट्रा विचरण

5) टास्क समांतर

6) गतिशील वस्तु

7) expando वस्तु

8) बेहतर COM-इंटरॉप

9) टपल

केवल में एसिंक्रोनस कोड लिखने के लिए कुछ

0

की क्षमता के नाम पर async और के साथ तुल्यकालिक फैशन प्रतीक्षा है।