2012-07-31 24 views
6

वहाँ केवल पढ़ने के लिए संपत्ति का उपयोग कर के बीच एक अंतर है:केवल पढ़ने के लिए ऑटो बनाम (केवल पढ़ने के लिए) संपत्ति

type T(arg) = 
    member x.M = arg 

एक स्वचालित रूप से लागू किया संपत्ति और का उपयोग कर:

type T(arg) = 
    member val M = arg 

संभालने arg है कोई दुष्प्रभाव नहीं? एक दूसरे को पसंद करने का कोई कारण?

+0

मेरे अनुभव में नहीं किया जा सकता, उन दोनों के बीच बहुत उल्लेखनीय अंतर नहीं है। – 4444

उत्तर

10

उन लोगों के बीच आवश्यक अंतर यह है कि member val एक अभिव्यक्ति का प्रतिनिधित्व करता है जिसे गणना की जाती है, उदाहरण के दौरान केवल। इसलिए,

type Person(fname, lname) = 
    member val Name = fname + lname // would be calculated once 

तो, पहला विचार प्रदर्शन है।

एक अन्य विचार स्वत: संपत्तियों के दो सीमाओं पर आधारित है:

  • आप केवल प्राथमिक ctor साथ प्रकार में उन्हें इस्तेमाल कर सकते हैं; जो भी अधिक समझ में आता है लगता है जब एक पूरे के रूप कोड को पढ़ने -
  • वे virtual
+0

सीमाएं उल्लेखनीय हैं। शायद मैंने इसे अच्छी तरह से वाक्यांश नहीं दिया, लेकिन मेरा मानना ​​था कि 'तर्क' एक साधारण मूल्य है जैसे शाब्दिक। जहां तक ​​मुझे पता है, लागत अंतर को समाप्त करता है। – Daniel

+3

मैं 'इस' संदर्भ की अनुपस्थिति के लिए ऑटो वाक्यविन्यास पसंद करता हूं। यह स्पष्ट करता है कि यह न तो वस्तु को बदलता है और न ही अन्य सदस्यों पर निर्भर करता है। – Daniel