ऑब्जेक्ट आरंभीकरण सिंटैक्स


99

मैं सिर्फ F # से शुरुआत कर रहा हूं और मुझे C # 3 में ऑब्जेक्ट इनिशियलाइज़ेशन करने के लिए सिंटैक्स नहीं मिल रहा है।

मैंने इसे दिया:

public class Person {
  public DateTime BirthDate { get; set; }
  public string Name { get; set; }
}

मैं F # में निम्नलिखित कैसे लिखूं:

var p = new Person { Name = "John", BirthDate = DateTime.Now };

जवाबों:


137

आप इसे इस तरह से कर सकते हैं:

let p = new Person (Name = "John", BirthDate = DateTime.Now)

सम्मेलन द्वारा नए का उपयोग केवल डिस्पोजेबल कक्षाओं के साथ किया जाता है।
शॉनमार्टिन

98

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

type Person(name:string, ?birthDate) =
  member x.Name = name
  member x.BirthDate = defaultArg birthDate System.DateTime.MinValue

अब हम लिख सकते हैं:

let p1 = new Person(name="John", birthDate=DateTime.Now)
let p2 = new Person(name="John")

कोड आपको नाम निर्दिष्ट करने की आवश्यकता है, लेकिन जन्मदिन कुछ डिफ़ॉल्ट मान के साथ एक वैकल्पिक तर्क है।


धन्यवाद टॉमस, लेकिन मेरे मामले में व्यक्ति एक और विधानसभा में है और मैं इसे नहीं बदल सकता :(
मौरिसियो शेफ़र

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.