जावा में, final
का मतलब है कि एक चर केवल एक बार असाइन किया जा सकता है, लेकिन यह असाइनमेंट प्रोग्राम में कहीं भी हो सकता है। सी #, readonly
का अर्थ है कि एक फ़ील्ड केवल कन्स्ट्रक्टर में असाइन किया जा सकता है, जो आईएमओ काफी कम उपयोगी है।सी # रीडोनली बनाम जावा फाइनल
जैसा कि हम सभी जानते हैं, सी # जावा डिजाइन से काफी प्रभावित था, लेकिन इस अंतर ने मुझे हमेशा अजीब होने के कारण परेशान किया है। क्या किसी को पता है कि सीएलआर में तकनीकी कारण है जिसके परिणामस्वरूप सी #बनाम जावा के final
के कम उपयोगी व्यवहार के परिणामस्वरूप?
संपादित करें:
टिप्पणियों के जवाब में; मैं यह इंगित करना चाहता हूं कि मैं अपरिवर्तनीयता के लाभों से अच्छी तरह से अवगत हूं, और मैं इसे पूरे स्थान पर उपयोग करता हूं। मेरा मानना है कि readonly
कम जावा के अलावा वजह से उपयोगी है:
public class Foo
{
private readonly int _bar;
Foo()
{
_bar = 5;
}
}
ओह, मैं वास्तव में एक सहायक विधि में वह मान प्रारंभ करने की जरूरत है!
public class Foo
{
private readonly int _bar;
Foo()
{
initialize()
}
private void initialize()
{
_bar = 5; //Can't compile because of semantics of readonly
}
}
आपका "कम उपयोगी" मेरा "अधिक सुरक्षित" है। – Oded
अपरिवर्तनीयता के क्या फायदे हैं? मुझे लगता है कि आपको 'readonly' मिल जाएगा संकलक के लिए काफी उपयोगी हो सकता है। आप सवाल स्वाभाविक रूप से व्यक्तिपरक है। – Jodrell
आप जावा में कार्यक्रम में कहीं भी अंतिम चरम पर मूल्य का आकलन नहीं कर सकते हैं। यदि आप स्थिर अंतिम स्थिर बना रहे हैं तो आपको स्पॉट पर मूल्य देना होगा अन्यथा यदि आप चर के रूप में चर बना रहे हैं तो आप इसे कन्स्ट्रक्टर में शुरू कर सकते हैं। – ankurtr