खोज…


Pocos

कुछ सरल प्रकार की कक्षाएं POCO हैं।

// C#
public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public DateTime Birthday { get; set; }
}

F # 3.0 में, C # ऑटो-गुण के समान ऑटो-गुण पेश किए गए थे,

// F#
type Person() = 
    member val FirstName = "" with get, set
    member val LastName = "" with get, set
    member val BirthDay = System.DateTime.Today with get, set

दोनों में से एक का निर्माण समान है,

// C#
var person = new Person { FirstName = "Bob", LastName = "Smith", Birthday = DateTime.Today }; 
// F#
let person = new Person(FirstName = "Bob", LastName = "Smith")

यदि आप अपरिवर्तनीय मूल्यों का उपयोग कर सकते हैं, तो एक रिकॉर्ड प्रकार बहुत अधिक मुहावरेदार एफ # है।

type Person = { 
    FirstName:string; 
    LastName:string; 
    Birthday:System.DateTime 
} 

और यह रिकॉर्ड बनाया जा सकता है:

let person = { FirstName = "Bob"; LastName = "Smith"; Birthday = System.DateTime.Today }

मौजूदा रिकॉर्ड को निर्दिष्ट करके और फिर जोड़ने with लिए फ़ील्ड की सूची के आधार पर रिकॉर्ड को अन्य रिकॉर्ड के आधार पर भी बनाया जा सकता है:

let formal = { person with FirstName = "Robert" }

इंटरफ़ेस लागू करना वर्ग

कक्षाएं इंटरफ़ेस के अनुबंध को पूरा करने के लिए एक इंटरफ़ेस लागू करती हैं। उदाहरण के लिए, एक C # वर्ग IDisposable को लागू कर सकता है,

public class Resource : IDisposable
{ 
    private MustBeDisposed internalResource;
    
    public Resource() 
    { 
        internalResource = new MustBeDisposed();
    }

    public void Dispose()
    {
        Dispose(true);
        GC.SuppressFinalize(this);
    }

    protected virtual void Dispose(bool disposing){
        if (disposing){
            if (resource != null) internalResource.Dispose();
        }
    }
}

F # में एक इंटरफ़ेस लागू करने के लिए, टाइप परिभाषा में interface का उपयोग interface ,

type Resource() = 
    let internalResource = new MustBeDisposed()

    interface IDisposable with
        member this.Dispose(): unit = 
            this.Dispose(true)
            GC.SuppressFinalize(this)

    member __.Dispose disposing = 
        match disposing with 
        | true  -> if (not << isNull) internalResource then internalResource.Dispose()
        | false -> ()


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow