क्या किसी के पास सी # विधि के अंदर this
असाइनमेंट का उपयोगी उदाहरण है? नौकरी साक्षात्कार के दौरान मुझे इसके लिए एक बार पूछा गया है, और मुझे अभी भी जवाब देने में दिलचस्पी है।सी # में "यह" असाइनमेंट का उदाहरण क्या है?
उत्तर
अन्य उत्तर सही नहीं हैं, जब वे कहते हैं कि तुम 'इस' को नहीं सौंप सकते। यह सच है, तो आप एक वर्ग प्रकार के लिए नहीं है, लेकिन आप एक struct प्रकार के लिए कर सकते हैं कर सकते हैं:
public struct MyValueType
{
public int Id;
public void Swap(ref MyValueType other)
{
MyValueType temp = this;
this = other;
other = temp;
}
}
किसी भी बिंदु पर एक struct की तरह ही तो 'इस' को बताए द्वारा बदल सकते हैं।
आप "यह" ओवरराइट नहीं कर सकते हैं। यह वर्तमान ऑब्जेक्ट उदाहरण को इंगित करता है।
मूल्य प्रकारों के लिए सही नहीं है। – jnm2
सिंटैक्स बिंदु दृश्य से इसके लिए केवल सही जगह है, तो जब आप foo (ftype this, ...) के रूप में विधि के पहले पैरामीटर निर्दिष्ट करते हैं तो एक्सटेंशन विधियां सी # 3.0 में होती हैं। और फिर ftype के किसी भी उदाहरण के लिए इस एक्सटेंशन का उपयोग कर सकते हैं। लेकिन यह सिर्फ वाक्यविन्यास है और इस ओवरवेड ऑपरेशन को वास्तविक नहीं है।
सच नहीं है। मान प्रकार ''' को असाइन कर सकते हैं और इसके लिए कोई अन्य वाक्यविन्यास नहीं है। – jnm2
का उपयोग करके यह कीवर्ड यह सुनिश्चित करता है कि वर्तमान प्रकार में स्कॉप्ड केवल चर और विधियां एक्सेस की जाएंगी। इसका उपयोग तब किया जा सकता है जब आपके पास फ़ील्ड/प्रॉपर्टी और स्थानीय चर या विधि पैरामीटर के बीच नामकरण संघर्ष हो।
आमतौर कंस्ट्रक्टर्स में इस्तेमाल किया:
private readonly IProvider provider;
public MyClass(IProvider provider)
{
this.provider = provider;
}
इस उदाहरण में हम निजी क्षेत्र प्रदाता के लिए पैरामीटर प्रदाता निर्दिष्ट करते हैं।
'इस' को असाइन करने का उदाहरण नहीं है। – jnm2
यदि आपको पर पर कुछ असाइन करने के लिए कहा जाता है, तो कुछ उदाहरण हैं।
class frmMain
{
void InitializeComponents()
{
btnOK = new Button();
btnOK.Parent = this;
}
}
'इस' को असाइन करने का उदाहरण नहीं है। – jnm2
"इस" वर्तमान वर्ग उदाहरण के लिए एक संदर्भ है: एक यह है कि मन में आता है एक नियंत्रण है जो अपने पिता है कह रहा है। आप एक वर्ग पर एक गैर स्थैतिक विधि है, तो आप इस का उपयोग करते हुए वर्तमान वर्ग उदाहरण का उल्लेख कर सकते हैं:
public class MyClass{
public string SomeProperty {get;set;}
public void GetSomeProperty(){
return this.SomeProperty;
}
}
'इस' को असाइन करने का उदाहरण नहीं है। – jnm2
मुझे पता है कि इस प्रश्न का उत्तर दिया गया है और चर्चा बंद हो गई है, लेकिन यहां एक मामला है जिसे मैंने इंटरवेब्स पर कहीं भी नहीं देखा और सोचा कि यह यहां साझा करने के लिए उपयोगी हो सकता है।
मैंने अभी भी serialization का समर्थन करते हुए सदस्यों की अपरिवर्तनीयता बनाए रखने के लिए इसका उपयोग किया है। एक struct
इस तरह परिभाषित किया गया पर विचार करें:
public struct SampleStruct : IXmlSerializable
{
private readonly int _data;
public int Data { get { return _data; } }
public SampleStruct(int data)
{
_data = data;
}
#region IXmlSerializableMembers
public XmlSchema GetSchema() { return null; }
public void ReadXml(XmlReader reader)
{
this = new SampleStruct(int.Parse(reader.ReadString()));
}
public void WriteXml(XmlWriter writer
{
writer.WriteString(data.ToString());
}
#endregion
}
हम this
अधिलेखित करने की अनुमति हो बाद से, हम एक उदाहरण के भीतर आयोजित _data
की अचल बनाए रख सकते हैं। इसमें नए मूल्यों को deserializing जब आप एक ताजा उदाहरण की गारंटी दी जाती है, इसका अतिरिक्त लाभ है, जो कभी-कभी एक अच्छी गारंटी है! }
आपने अभी एक म्यूटेबल वैल्यू टाइप बनाया है। और इससे भी बदतर, आप एक परिवर्तनीय मान प्रकार बनाते हैं जो * प्रकट होता है * जैसे कि यह पहली नज़र में अपरिवर्तनीय है। यह सभी प्रकार की बुराई है। – Servy
मैं थोड़ी अधिक सुरक्षा के लिए IXmlSerializable इंटरफ़ेस को स्पष्ट रूप से कार्यान्वित करने की अनुशंसा करता हूं, लेकिन फिर प्रश्न बन जाता है, क्या सीरियलज़ेबल होने के लिए यह हमेशा ठीक है, क्योंकि धारावाहिक होने के लिए आपको किसी अर्थ में उत्परिवर्तनीय होने की आवश्यकता है। – mhand
- 1. सी #: क्या यह फ़ील्ड असाइनमेंट सुरक्षित है?
- 2. जावा असाइनमेंट मुद्दे - क्या यह परमाणु है?
- 3. क्या यह बहुरूपता का उदाहरण है?
- 4. जावास्क्रिप्ट: क्या यह एक सशर्त असाइनमेंट है?
- 5. सी # में enums - असाइनमेंट
- 6. * यह करने के लिए असाइनमेंट क्या करता है (* यह = वैल)?
- 7. क्या यह वास्तव में एडाप्टर पैटर्न का एक उदाहरण है?
- 8. यह सरल असाइनमेंट अपरिभाषित व्यवहार क्यों है?
- 9. असाइनमेंट वापस क्या करता है?
- 10. सी # में ओवरलोडिंग असाइनमेंट ऑपरेटर
- 11. सी ++ में पॉइंटर असाइनमेंट परमाणु है?
- 12. क्या यह एक एसक्यूएल इंजेक्शन अटैक का एक उदाहरण है?
- 13. सी ++ ओवरलोडिंग असाइनमेंट ऑपरेटर
- 14. सी # प्रारंभकर्ता सशर्त असाइनमेंट
- 15. क्या सी ++ 'स्पष्ट' कीवर्ड के उपयोग का यह उदाहरण सही है?
- 16. एंडपॉइंट: सी # में सिंटेक्स - यह क्या है?
- 17. सी में यह त्रुटि क्या है?
- 18. यह सी ++/सी ++ 11 निर्माण का मतलब क्या है?
- 19. स्थानांतरण: यह क्या लेता है?
- 20. सी ++: सदस्यवार असाइनमेंट कैसे काम करता है?
- 21. सी # में यूनिट परीक्षण का एक उदाहरण?
- 22. सी # कक्षा का उदाहरण कैसे बनाता है?
- 23. जावास्क्रिप्ट में एकाधिक असाइनमेंट? [ए, बी, सी] = [1, 2, 3] क्या करता है; क्या मतलब है?
- 24. क्या यह सी ++ 'चाल' अर्थशास्त्र का सही उपयोग है?
- 25. "शून्य सूचक असाइनमेंट त्रुटि" क्या है?
- 26. यह सी # "निर्देश का उपयोग कर" क्या है?
- 27. सी # में टुपल्स और अनपॅकिंग असाइनमेंट समर्थन?
- 28. '!!' का उपयोग कर रहा है सी/सी ++ में अच्छा अभ्यास और क्या यह आम है?
- 29. असाइनमेंट ऑपरेटर में सी ++ फ़ंक्शन मूल्यांकन ऑर्डर
- 30. PHP में वैल्यू ऑब्जेक्ट का उदाहरण क्या है?
हर दिन कुछ नया सीखें ... –
ओह, ऐसा इसलिए है क्योंकि एक संरचना के रूप में यह एक मूल्य प्रकार और असाइनमेंट ऑपरेटर = मूल्य प्रकार प्रतियों के मानों के साथ है। –
प्रबुद्ध!विषयपरक टिप्पणी: हालांकि स्वैप (रेफ स्ट्रक्चर) परिदृश्य के अलावा, मैं किसी और चीज के बारे में सोच नहीं सकता जो इससे लाभ उठा सकता है। इसका उपयोग उस संरचना के सभी सदस्यों को निर्दिष्ट करने से पहले नहीं किया जा सकता है। मैं इसके बजाय उपरोक्त के रूप में उपयोग की जाने वाली विधि रखने के बजाय s2 = s1 का उपयोग करना चाहता हूं। – Gishu