2009-12-01 6 views
11

कॉल करने के लिए नए प्रकार() या बस टाइप() का उपयोग करना चाहिए, दोनों सिंटैक्स बराबर हैं (कम से कम मुझे लगता है कि वे हैं)।क्या मुझे कन्स्ट्रक्टर

let o1 = new Object() 

या

let o2 = Object() 

किस तरह आप अधिक बार उपयोग करते हैं? पठनीयता के मुद्दों के बारे में क्या?

उत्तर

10

वे वही हैं।

मैं 'नई' का उपयोग करना पसंद करता हूं, इसके अलावा मुझे अन्य भाषाओं में आदी होने के अलावा थोड़ा अच्छा कारण है, और यह कन्स्ट्रक्टर कॉल के लिए ढूंढने/grep को ढूंढना आसान बनाता है ('सभी संदर्भों को खोजने के लिए स्मार्ट टूल्स की कमी' एक समाधान में)।

+0

सबसे अच्छा विकल्प लगता है, हाँ। – Stringer

18

मुझे लगता है कि "नया" छोड़ना थोड़ा और अधिक कार्यात्मक है, इसलिए यह मेरी वरीयता है। मुझे यह पसंद है कि आप एक प्रकार के उदाहरण को लौटाने वाले किसी भी अन्य फ़ंक्शन की तरह एक कन्स्ट्रक्टर का इलाज कर सकते हैं।

+0

भी समझ में आएगा .. मुझे लगता है कि महत्वपूर्ण चीजें एक विकल्प बनाना है और फिर इसके अनुरूप है। – Stringer

9

मैं दूसरा क्या केवीबी कहता हूं। इसके अतिरिक्त, मैं new छोड़ देता हूं क्योंकि इससे मुझे सी # की तरह, सीधे ऑब्जेक्ट पर सदस्यों को सीधे आमंत्रित करने की अनुमति मिलती है। उदाहरण के लिए, का पालन कोड काम करता है: मैं आदेश प्राप्त करने के लिए new अभिव्यक्ति बीच में लिखना करने की जरूरत है

new DateTime(2012, 12, 21).ToString() 

तो अब:

DateTime(2012, 12, 21).ToString() 

निम्नलिखित कोड नहीं काम करते हैं और एक संकलक त्रुटि में परिणाम नहीं करता है यह संकलन करने:

(new DateTime(2012, 12, 21)).ToString() 

मैं अतिरिक्त कोष्ठक पसंद नहीं है, इसलिए मैं अब new प्रयोग से बचें।

एक केस जहां मैं अभी भी इसका उपयोग करूँगा, जब मैं ऐसी वस्तु बना रहा हूं जो IDisposable लागू करता है।

इस में
let writeFile = 
    let writer = StreamWriter(@"hello.txt") 
    writer.WriteLine("hello") 

परिणाम:: इसका कारण यह है कि अगर मैं new कीवर्ड को छोड़ देते हैं, जब एक IDisposable एफ # संकलक बनाने एक चेतावनी देता है

warning FS0760: It is recommended that objects that support the IDisposable interface are created using 'new Type(args)' rather than 'Type(args)' to indicate that resources may be owned by the generated value

मैं new में जोड़कर चेतावनी से छुटकारा पा सकते कीवर्ड:

let writeFile = 
    let writer = new StreamWriter("hello.txt") 
    writer.WriteLine("hello") 

चेतावनी भी एहसास है कि मैं वास्तव में एक use मेरी 01,238,111 के लिए बाध्यकारी होना चाहिए मुझे का कारण बनता है:

let writeFile = 
    use writer = new StreamWriter("hello.txt") 
    writer.WriteLine("hello") 

लेकिन अगर मैं newहर समय उपयोग करने के लिए मेरे कोड लिखा था तो मैं चेतावनी मुझे याद दिलाया कि मैं एक IDisposable साथ काम कर रहा हूँ कभी नहीं मिलेगा !!!

यह भी कम टाइपिंग के लिए बनाता है। ;-)

+0

बहुत तार्किक तर्क यह है कि क्यों 'नया' का उपयोग न करें, लेकिन जब आवश्यक हो तो केवल 'उपयोग' करें। कोष्ठक पर मुंह से साफ कोड में परिणाम। – bugfoot

संबंधित मुद्दे