2015-11-20 16 views
5

मैंने फिर से सी # उठाया, जावा में लंबे काम के बाद वापस आया, और जैसा कि आप उम्मीद कर सकते हैं, मुझे गुणों में बहुत दिलचस्पी है (ओह जावा बोझ), इसलिए मैंने उन्हें थोड़ा सा खोजना शुरू कर दिया और इसके साथ आया।सी # - निरंतर संपत्ति लैम्ब्डा अभिव्यक्ति के बराबर है?

private static float Width { 
    get { return 0.012f; } 
} 

फेरबदल का एक सा के बाद, मुझे एहसास हुआ कि यह भी काम करता है (लैम्ब्डा अभिव्यक्ति?)।

private static float Width => 0.012f; 

अब समझने के लिए कृपया एक साथी जावा डेवलपर की सहायता करें कि वास्तव में क्या अंतर है? पूर्व क्या कर सकता है कि उत्तरार्द्ध नहीं कर सकता है और इसके विपरीत।

+0

कौन सी # के संस्करण का उपयोग कर रहे हैं। सी # 6.0 में गुणों को प्रारंभ करने के आसपास कुछ नई विशेषताएं हैं। –

+0

@ karlGjertsen नवीनतम उपलब्ध एक – Israelg99

+0

आपके पास तब नई सुविधाएं हैं! ;-) मैंने एक पूर्ण स्पष्टीकरण के साथ नीचे एक उत्तर जोड़ा। –

उत्तर

8

वास्तव में क्या अंतर है?

दोनों तरीके एक गेटटर केवल संपत्ति को परिभाषित करते हैं। उत्तरार्द्ध बस "Expression Bodied Members" नामक सी # 6 की नई सुविधा का उपयोग करता है, विशेष रूप से ये "अभिव्यक्ति बोडीड प्रॉपर्टीज" हैं, जो आपको वसा तीर सिंटैक्स का उपयोग करने की अनुमति देते हैं और केवल सिंटैक्स चीनी हैं।

आप क्या compiler generates को देखें, तो आप देखेंगे:

private static float Width 
{ 
    get 
    { 
     return 0.012f; 
    } 
} 

जो आपके गेटर केवल घोषणा के समान है।

ये भी रूप में अच्छी तरह से एक-लाइनर तरीकों के लिए लागू किया जा सकता है:

public int Multiply(int x) => x * x; 
+0

देखें: [सी # 6.0] (https://msdn.microsoft.com/en-us/magazine/dn802602.aspx) –

+0

क्या मुझे केवल "अभिव्यक्ति बोडीड प्रॉपर्टीज" का उपयोग करने में कोई नुकसान है? केवल गेटटर केवल संपत्ति लिखने के बजाय मैन्युअल रूप से? जैसा कि पूर्व के बाद की तुलना में अधिक पढ़ने योग्य है। – Israelg99

+1

@ इज़राइलग 99 यह केवल वाक्य रचनात्मक चीनी है, और कुछ भी नहीं। कंपाइलर अभी भी कवर के तहत एक ही कोड उत्पन्न करेगा। जो भी आप और आपके साथियों को अधिक पठनीय खोजने के लिए उपयोग करें। –

2

इस भाषा का सरलीकरण है के तहत सी # 6.0 और 'अभिव्यक्ति शरीर कार्य/गुण' कहा जाता है।

विचार वाक्यविन्यास को सरल बनाना है और आपको छोटे प्रारूप में कार्यों और गुणों के लिए मान सेट करने की अनुमति देता है।

दृश्य स्टूडियो पत्रिका यहाँ उस पर एक लेख है: https://visualstudiomagazine.com/articles/2015/06/03/c-sharp-6-expression-bodied-properties-dictionary-initializer.aspx

+1

मैं अपने पूर्व उदाहरण के बजाय इस नए 'अभिव्यक्ति बोडीड फ़ंक्शंस/प्रॉपर्टीज' का उपयोग करूँगा। जब मैंने स्टैक ओवरफ्लो पर इस बारे में शोध किया तो मैंने देखा कि कई उपयोगकर्ता गेटटर केवल संपत्ति को मैन्युअल रूप से परिभाषित करते हैं, जैसा कि अब मैं देखता हूं, यह पुरानी जानकारी है। – Israelg99

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