2015-10-17 8 views
15

तो मेरे पास Id फ़ील्ड वाला एक बहुत ही सरल वर्ग है, और Id कन्स्ट्रक्टर में सेट किया जा सकता है।क्या यह वास्तव में एक सरलीकरण है?

आमतौर पर मैं विधि तर्क के विपरीत वर्ग संपत्ति की स्पष्ट रूप से पहचान करने के लिए this का उपयोग करूंगा। मेरे लिए यह स्पष्ट लगता है।

आईडीई0003 मुझे this को हटाना चाहता है, संदेश 'नाम सरलीकृत किया जा सकता है', क्या यह सही है?

यह मेरे लिए कम स्पष्ट प्रतीत होता है, और id = id में आसानी से एक आवरण त्रुटि की अनुमति देता है।

enter image description here

+15

ठीक है, मुझे लगता है कि आप पहले से ही यह कहा सब: हर 'सरलीकरण' भी एक 'स्पष्टीकरण' .. – TaW

+1

मुझे लगता है कि वे दोनों एक ही बात में संकलित है। इसलिए आप जो कुछ भी लिखा है उसे सरल बनाएं। –

+5

हम्म, इस तरह के प्रश्न केवल प्रोग्रामर द्वारा पूछे जाने वाले हैं जो एक काले संपादक विंडो पृष्ठभूमि का उपयोग करते हैं। हाँ, वह लाइटबुल बहुत दिखाई दे रहा है। पृष्ठभूमि रोशनी होने पर इससे परेशान नहीं होना चाहिए :) निश्चित रूप से यह एक "सरलीकरण" है, कम कोड है। लेकिन यह रनटाइम पर बिल्कुल कोई फर्क नहीं पड़ता है और यह सुनिश्चित करता है कि आप स्वत: पूर्णता का उपयोग करने में मदद नहीं करते हैं। –

उत्तर

7

this कीवर्ड लगभग हमेशा अनावश्यक है, When do you use the "this" keyword? देखते हैं।

एक आवरण त्रुटि आसानी से में परिणाम के लिए अनुमति देता id = id

कि अपने आप ही एक और चेतावनी निकलेगा:

असाइनमेंट एक ही चर के लिए किए गए; क्या आप कुछ और सौंपने का मतलब था?

+2

सी # केस संवेदनशील है।इस मामले में यह वास्तव में इसे हटाने के लिए एक सरलीकरण होगा। –

4

आप General Naming Conventions का उपयोग करते हैं तो this कीवर्ड क्योंकि पैरामीटर id होना चाहिए और संपत्ति पर Naming Guidelines आधारित Id होना चाहिए अनावश्यक है। तो यह साफ लगता है:

public int Id 
{ 
    get; 
    private set; 
} 


public VSOMessage(int id) 
{ 
    Id = id; 
} 

कृपया ध्यान दें कि दिशा-निर्देशों में ही नहीं कहता, उपयोग करने के लिए है या नहीं this कीवर्ड का उपयोग, लेकिन क्योंकि सी # केस संवेदी है, यह एक सरलीकरण होगा this कीवर्ड लेकिन दूर करने के लिए जब आपनामकरण सम्मेलन का उपयोग नहीं करते हैं तो आप के बजाय id संपत्ति का नाम दे सकते हैं ताकि आपको ऐसे मामलों में this कीवर्ड का उपयोग करना चाहिए।

+2

कीवर्ड ['this'] (https://msdn.microsoft.com/en-us/library/dk1507sz.aspx) इस परिदृश्य के लिए स्पष्ट रूप से उपयोगी है:" समान नामों से छिपे सदस्यों को अर्हता प्राप्त करने के लिए "। इसके अलावा, प्रत्येक सदस्य चर एक संपत्ति नहीं है और कुछ गुणों में बैकिंग चर हो सकता है (विशेष रूप से अपरिवर्तनीय वस्तुओं के लिए उपयोगी)। इसके अतिरिक्त 'इस', 'आधार' का उपयोग करके, और स्थिर विधियों के लिए कक्षा का नाम पठनीयता में सुधार करता है और इरादे को मजबूत करता है। – ShooShoSha

29

इस अन्य प्रश्न का एक उत्तर है जो कहता है कि आप व्यवहार को हटाने के लिए संपादक को कॉन्फ़िगर कर सकते हैं। व्यक्तिगत रूप से मुझे पसंद है "इस"

Tools > Options > Text Editor > C# > Code Style and check Qualify member access with 'this' 

Visual Studio 2015 - Change Light Bulb, Quick Action settings

+6

कीवर्ड 'यह' का उपयोग करके स्पष्ट रूप से पता चलता है कि चर मौजूद है। यदि यह 'इस', 'आधार', या वर्ग (स्थिर विधियों के लिए) के साथ उपसर्ग नहीं है, तो चर का दायरा स्थानीय और एक विधि के रूप में वैश्विक है। यह इरादे और पठनीयता को इसके विसर्जन से अधिक स्पष्ट बनाता है। – ShooShoSha

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