एक अंतर यह है कि 0
का मूल्यांकन किया जाता है: ऑब्जेक्ट निर्माण या जब संपत्ति का उपयोग किया जाता है।
आप दिनांक समय गुणों के साथ इस बेहतर देख सकते हैं:
class SomeTestClass
{
public DateTime Start { get; } = DateTime.Now;
public DateTime Now => DateTime.Now;
}
Start
संपत्ति (की जब उदाहरण के लिए बनाया गया था) एक ही समय लौट रहा रखता है, जबकि Now
परिवर्तन वर्तमान समय को प्रतिबिंबित करने के।
स्पष्टीकरण:
पहले संस्करण ("प्रारंभ") एक प्रारंभिक मूल्य है कि निर्माता द्वारा ओवरराइट किया जा सकता है प्रदान करता है। तो यह सिर्फ एक बार मूल्यांकन किया जाता है।
दूसरा संस्करण ("अब") अभिव्यक्ति प्रदान करता है जो इस संपत्ति का "गेटटर" होगा। इसलिए जब भी संपत्ति पढ़ी जाती है तो इसका मूल्यांकन किया जाता है। यहां तक कि एक बैकिंग फ़ील्ड भी नहीं है जिसे कन्स्ट्रक्टर ओवरराइट कर सकता है।
स्रोत
2017-09-05 10:36:04
ध्यान दें कि दूसरा संस्करण हमेशा एक ही मान नहीं देता है। एक अच्छा उदाहरण यह है कि यदि आप 'random.extInt()' वापस करते हैं। पहला संस्करण मूल्यांकन करेगा कि एक बार और हमेशा एक ही मूल्य होगा। दूसरा हर बार एक नया मूल्य वापस करेगा। – Hosch250