F#
पोर्टिंग C # से F #
खोज…
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