2011-05-04 14 views
7

संभव डुप्लिकेट:
When do you use the “this” keyword?नहीं उपयोग करने के लिए या सी # में 'इस' क्वालीफायर का उपयोग करने के

मैं सिर्फ Resharper उपयोग करते हुए मेरे कोड का विश्लेषण शुरू कर दिया है और वहाँ बहुत सी बातें यह हैं ने सुझाव दिया है कि मैं करता हूं और मैं वास्तव में अपने आउटपुट से प्रसन्न हूं क्योंकि यह मुझे चीजों को करने के लिए कुछ बेहतर तरीके भी सिखा रहा है।

स्पष्ट रूप से इसके सुझावों को अनदेखा किया जा सकता है और इनमें से एक मैं समुदाय से कुछ प्रतिक्रिया प्राप्त करना चाहता हूं!

मैंने हमेशा मौजूदा वर्ग (यानी यह नाम) से संबंधित गुणों के लिए 'इस' क्वालीफायर का उपयोग करना पसंद किया है। कोई वास्तविक कारण नहीं - मैं बस पहले इस चंद्रमा को अपनाने लग रहा था।

रिशेर्पर सुझाव देता है कि यह अनावश्यक है और शायद मुझे इसे हटा देना चाहिए।

आपको क्या लगता है?

+1

निश्चित रूप से इसके कुछ डुप्लीकेट हैं: http://stackoverflow.com/questions/725770/should-the-java-this-keyword-be-used-when-it-is-optional और http: // stackoverflow .com/प्रश्न/3920279/चाहिए-i-use-this-keyword-in-oop-programing-where-its-possible-to-skip-it-a – Dyppl

+2

आप उन सपनों को जानते हैं जहां आप कक्षा में हैं या काम पर हैं और आप कोई कपड़े नहीं पहन रहे हैं? इस प्रकार सदस्य संपत्ति या विधि संदर्भ 'इस' के बिना मुझे महसूस करते हैं। –

+0

समानता को ध्यान में रखते हुए, इस मामले में कपड़े पहनना एक अनावश्यक, सीमा रेखा न्यूरोटिक व्यवहार होगा। –

उत्तर

11

याद रखने की महत्वपूर्ण बातों में से एक यह है कि this संकलक द्वारा हटा दिया गया है और इसलिए यह पूरी तरह से 'आप के लिए अच्छा लग रहा है और जिनके साथ आप कोड साझा करते हैं?' का मामला है। यह प्रदर्शन को प्रभावित नहीं करेगा एक श्वेत नहीं।

+0

धन्यवाद - यह मेरी मुख्य चिंता है - चाहे कुछ करने के लिए मेरी प्राथमिकता प्रदर्शन के लिए कम अनुकूलित हो। – EzaBlade

2

यह तकनीकी रूप से अनावश्यक है, लेकिन स्टाइलकॉप (यदि आप चुनिंदा हैं और माइक्रोसॉफ्ट कोडिंग मानकों के पूर्ण सेट का उपयोग कर रहे हैं) का कहना है कि आपको इसका उपयोग करना चाहिए।

मैं करता हूं, बहुत से लोग नहीं करते हैं, इसलिए मुझे लगता है कि यह आपके नियोक्ता पर व्यक्तिगत वरीयता या कोडिंग मानक के लिए नीचे है।

1

इस मामले में इसकी प्राथमिकता - इसलिए आप इसका उपयोग करना पसंद करते हैं, रिशेर्पर को बताएं कि यह शिकायत करना बंद कर देगा।

11

मैं यह विशेष रूप से एक अच्छी तरह से परिभाषित कोडिंग मानक के साथ अनावश्यक लगता है:

Name // Property 
_name // Member field 
name // local variable 

this.<whatever> का उपयोग सिर्फ अधिक काम हो रहा है।

+0

यह अभी भी आधार को हल नहीं करता है। योग्यता कार्यक्षमता। –

12

अधिमानतः, मैं this का उपयोग केवल के बीच (संभवतः) एक संपत्ति और एक समारोह पैरामीटर

public class thing 
{ 

    private string name; 

    public thing(string name) 
    { 
     this.name = name; // will set private string name to param string name 
    } 

} 

अगर आप पहले से ही एक निश्चित वर्ग के संदर्भ में काम कर रहे हैं अस्पष्टता को रोकने के लिए, यह इस रखने के लिए इतना मुश्किल नहीं है ध्यान में रखते हुए, और मुझे इस तथ्य की याद दिलाने की आवश्यकता नहीं है कि हर बार जब मैं एक को संबोधित करता हूं तो मैं एक स्थानीय चर को संबोधित कर रहा हूं।

तो मुझे लगता है कि इस पर रिशेर्पर का अधिकार है।

5

इसका उपयोग करने का एक फायदा। इंटेलिजेंस है यह उन चीज़ों की सूची को संक्षिप्त करता है जिन्हें आप तेजी से चुन सकते हैं।

+4

आप इस – oleksii

+0

@oleksii के बिना CTRL + SPACE दबाकर इंटेलिसेंस का उपयोग कर सकते हैं: मुझे यह नहीं पता था - हर दिन कुछ नया सीखें! – n8wrl

+0

कभी भी, CTRL + SHIFT + SPACE भी है, मुझे याद नहीं है कि अंतर क्या है – oleksii

6

मुझे व्यक्तिगत रूप से लगता है कि this कीवर्ड का उपयोग करना एक अच्छा अभ्यास है क्योंकि यह स्पष्ट रूप से अंक/विधि/आदि वस्तु उदाहरण से संबंधित है या नहीं।

/// some pretty long method 
/// ... 
frameCount += 1; // is it private memeber or some local defined above? 

जरूरत नहीं यह शायद बेहतर सब पर से inconsistenly का उपयोग इसका इस्तेमाल करने की नहीं है कहने के लिए: यह विशेष रूप से उपयोगी तो निजी सदस्यों नामित कर रहे हैं ताकि स्थानीय चर निजी सदस्यों से पृथक कर रहे हैं।

हालांकि मुझे लगता है कि this का लगातार उपयोग this के साथ कोड को "शोर" बनाता है, जो अनुपयोगी विचलनकर्ता है।IMO यह निजी सदस्यों के लिए विशेष _ उपसर्ग नामकरण उपयोग करना बेहतर है:

/// some pretty long method 
/// ... 
_frameCount += 1; // it's clearly private memeber! 

यह भी बहुत तेजी से टाइप करने के लिए है।

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