ठीक है, एक आसान सवाल है।संपत्ति गेटटर में मूल्यांकन करते समय या एक उदाहरण बनाते समय?
सबसे पहले, मुझे यह कहना है कि मेरी चिंता प्रदर्शन नहीं है। मुझे पूरी तरह से पता है कि जो भी प्रदर्शन एक विकल्प खर्च करता है या दूसरा हो सकता है वह संभवतः व्यर्थ है और सामान्य परिदृश्यों पर विचार करने के लायक भी नहीं है। डिजाइन मानकों और जिज्ञासा के साथ इसका अधिक संबंध है कि कैसे अधिकांश कोडर इसे करेंगे।
ठीक है, तो सवाल नहीं बल्कि सरल है:
मान लीजिए मैं एक ComplexNumberstruct
जो मैं निम्नलिखित तरीके से लागू हो सकता है:
public struct Complex : IEquatable<Complex>, IFormattable
{
readonly double realPart, imaginaryPart, magnitude, argument;
readonly static Complex j = new Complex(0, 1);
public Complex(double realPart, double imaginaryPart)
{
this.realPart = realPart;
this.imaginaryPart = imaginaryPart;
this.magnitude = Math.Sqrt(Math.Pow(realPart, 2) + Math.Pow(imaginaryPart, 2));
this.argument = Math.Atan2(imaginaryPart, realPart);
}
public double RealPart { get { return this.realPart; } }
public double ImaginaryPart { get { return this.imaginaryPart; } }
public double Magnitude { get { return this.magnitude; } }
public double Argument { get { return this.argument; } }
public static Complex J { get { return Complex.j; } }
...
}
Magnitude
और Argument
गुण क्षेत्रों हैं कि समर्थन किया है निर्माण समय पर मूल्यांकन किया। एक अन्य विकल्प केवल गेटटर में इसी मूल्य का मूल्यांकन करना होगा।
ऐसा करने का सबसे अनुशंसित तरीका क्या है? क्या कोई कोडिंग मानक है जो मानक रखने के लिए किसी भी विकल्प की सिफारिश करता है? और यदि कोई नहीं है, तो आमतौर पर पसंदीदा विकल्प क्या होता है? या यह केवल प्रदर्शन निर्भर है जो मेरे मामले में अप्रासंगिक है?
एहम, कोड में कोई सेटर्स नहीं हैं। – svick
मैं आपका अनुसरण नहीं करता हूं। यह एक अपरिवर्तनीय प्रकार है, कोई सेटर्स नहीं हैं। सवाल यह है कि अगर कन्स्ट्रक्टर में संबंधित फ़ील्ड को शुरू करने का विकल्प चुनना है और फिर उन्हें गेटटर के माध्यम से उपलब्ध कराया जा रहा है या बस बैकिंग फील्ड नहीं चुनना है और गेटटर में हर बार मूल्यांकन करना है। – InBetween
बेशक, – hofnarwillie