c# - Why String is Value type although it is a class not a struct? -


निम्न उदाहरण लें:

  स्ट्रिंग मी = "इबराहेम"; स्ट्रिंग कॉपी = मुझे; मुझे = "खाली"; Console.WriteLine (मुझे); Console.WriteLine (कॉपी);   

आउटपुट है:

  रिक्त इबराहेम   

चूंकि यह वर्ग प्रकार है (अर्थात कोई संरचना नहीं है), स्ट्रिंग copy में भी खाली होना चाहिए क्योंकि सी # में = ऑपरेटर ऑब्जेक्ट के बजाय ऑब्जेक्ट का संदर्भ निर्दिष्ट करता है (सी ++ में) ?? < / P>

सिस्टम.स्ट्रिंग कोई मान प्रकार नहीं है। यह कुछ प्रकार के व्यवहार प्रदर्शित करता है जो कि मूल्य प्रकार के समान हैं, लेकिन जो व्यवहार आपने पार किया है वह उनमें से एक नहीं है। निम्न कोड पर विचार करें।

  वर्ग फ़ू {सार्वजनिक स्ट्रिंग SomeProperty {get; निजी सेट; } सार्वजनिक फू (स्ट्रिंग बार) {SomeProperty = bar}} फ़ू कुछ ऑथरफू = नया फू ("बी"); फु फू = कुछ ओफ़रफू; SomeOtherFoo = नया फू ("सी");   

यदि आप foo.SomeProperty के आउटपुट की जांच करते हैं, तो क्या आप इसे someOtherFoo.SomeProperty जैसा ही मानते हैं? यदि हां, तो आपके पास भाषा की एक ग़लत समझ है

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

Comments

Popular posts from this blog

mysql - BLOB/TEXT column 'value' used in key specification without a key length -

javascript - What is an alternative to using getElementByClass for hiding multiple elements? -

c# - GetType() == type perfomance question -