मैं थोड़ी देर के लिए सोच रहा है यही कारण है कि सी # कक्षा या एक विधि स्तर पर const
समर्थन नहीं करता। मुझे पता है कि जॉन स्कीट लंबे समय तक अपरिवर्तनीयता के लिए समर्थन चाहते थे, और मैं फिर से काम करता हूं कि फंक्शन कॉन्स के सी ++ सिंटैक्स का उपयोग करने में सहायता मिल सकती है। कक्षा स्तर पर एक कॉन्स कीवर्ड जोड़कर हम कुल समर्थन प्राप्त करेंगे।सी # समर्थन कक्षा/विधि स्तर पर क्यों नहीं है?
अब, मेरे सवाल है, क्या कारण सी # टीम के लिए है समर्थन के इस प्रकार विकसित किया है नहीं करने के लिए?
मैं सब कुछ कल्पना CLR बार बदले बिना एक संकलन समय चेक के साथ या विशेषताओं के माध्यम से बनाया जा सकता है। मुझे लगता है कि कोड प्रतिबिंब के माध्यम से कॉन्स व्यवहार को ओवरराइड करने में सक्षम नहीं है।
इस कल्पना कीजिए:
const class NumberContainer
{
public int Number { get; }
}
.. इस तरह के एक वर्ग केवल निर्माण समय में आबादी किया जा सकता है, तो हम एक निर्माता आवश्यकता होगी किसी पूर्णांक में लेने के लिए।
एक और उदाहरण के लिए एक विधि-स्तर पर स्थिरांक है:
public int AddNumbers(NumberContainer n1, NumberContainer n2) const
{
return n1.Number + n2.Number;
}
कॉन्स्ट स्तर की विधियों को अपने ही वर्ग या संदर्भ प्रकार उन्हें पारित मामलों में स्थिति में परिवर्तन करने में सक्षम नहीं होना चाहिए। इसके अलावा, कॉन्स्ट-स्तरीय फ़ंक्शंस केवल अपने दायरे में अन्य कॉन्स्ट-स्तरीय फ़ंक्शंस का आह्वान कर सकता है।
मैं सच में यकीन है कि अगर lambdas और प्रतिनिधियों बहुत कठिन सब कुछ होगा (या असंभव) प्राप्त करने के लिए नहीं कर रहा हूँ, लेकिन मैं भाषा और संकलक डिजाइन मुझे बता सकते में और अधिक अनुभव के साथ यकीन है कि किसी को कर रहा हूँ।
स्टीव बी टिप्पणी में कहा, readonly
के अस्तित्व चीज़ें थोड़ी अधिक जटिल, स्थिरांक के रूप में आता है और readonly
runtime
के दौरान एक ही के करीब हैं, लेकिन readonly
मूल्यों संकलन समय के दौरान निर्धारित नहीं किया जा सकता है। मुझे लगता है कि हमारे पास const
और readonly
स्तर हो सकता है लेकिन यह बहुत भ्रमित हो सकता है?
तो, यह लागू नहीं करने के लिए कारण क्या है? प्रयोज्य चिंताओं (अधिक अचल स्थिति-चर्चा के दिनों कर रहे हैं) (सी ++ में constness समझने आम तौर पर काफी नए उपयोगकर्ताओं के लिए मुश्किल), भाषा डिजाइन चिंताओं (नहीं किया जा सकता) या बस प्राथमिकता चिंताओं ..?
'readonly' कीवर्ड आपकी आवश्यकता को संभाल नहीं करता है? –
ओप्स, मेरा बुरा .. मुझे पढ़ने के बारे में बहुत कुछ सोचा था, लेकिन इसे पोस्ट करना भूल गया। मेरे विचार-प्रक्रिया को अपडेट कर देगा .. – cwap
आप मूल रूप से पूछ रहे हैं "भाषा में एक्स क्यों विशेषता नहीं है" - सरल: या तो इसे प्रस्तावित नहीं किया गया है + माना जाता है + अनुमोदित + स्कॉप्ड + डिज़ाइन + अपूर्ण + परीक्षण + दस्तावेज + तैनात (उस संसाधन के लिए अन्य संभावित उपयोगों और भाषा ब्लोट के प्रभाव के खिलाफ वजन), या * उनमें से कुछ * पर विचार किया गया था और इसे अवांछनीय, या स्थगित कर दिया गया था। यह स्वचालित नहीं है कि प्रत्येक भाषा को कल्पना की जाने वाली हर सुविधा मिलती है। –