मुझे संदेह है कि मैं हल नहीं कर सकता। मैंने class constructors के लिए embarcadero पर प्रलेखन पढ़ा है लेकिन मैं इसका अर्थ समझ नहीं पा रहा हूं। दूसरे शब्दों में, constructor
और class constructor
के बीच उपयोग अंतर क्या है? मैं इस किया था:डेल्फी कन्स्ट्रक्टर और क्लास कन्स्ट्रक्टर
type
TGeneric<T> = class
private
FValue: T;
aboutString: string;
procedure setValue(const a: T);
public
property V: T read FValue write setValue;
property about: string read aboutString;
constructor Create;
destructor Destroy; override;
end;
implementation
{ TGeneric<T> }
constructor TGeneric<T>.Create;
begin
inherited;
aboutString := 'test';
end;
इसके बजाय इस कोड को ठीक से काम नहीं कर रहा है:
type
TGeneric<T> = class
private
FValue: T;
aboutString: string;
procedure setValue(const a: T);
public
property V: T read FValue write setValue;
property about: string read aboutString;
class constructor Create;
destructor Destroy; override;
end;
implementation
{ TGeneric<T> }
class constructor TGeneric<T>.Create;
begin
inherited;
aboutString := 'test';
end;
मुझे लगता है कि इस सवाल का जवाब दस्तावेज की इस पंक्ति में है:
आम तौर पर, वर्ग निर्माता ये हैं क्लास के स्थिर फ़ील्ड को प्रारंभ करने या प्रारंभिक प्रकार का प्रदर्शन करने के लिए उपयोग किया जाता है, जिसे क्लास या किसी भी क्लास इंस्टेंस के ठीक से काम करने से पहले आवश्यक है।
मुझे बताओ अगर मैं सही हूँ:
- निर्माता: मैं,
inherited Create;
उपयोग कर सकते हैं चर और इतने पर आरंभ कर देगा। - कक्षा निर्माता: जब मैं अपनी कक्षा में तुरंत ऑब्जेक्ट बनाना चाहता हूं तो मैं इसका उपयोग कर सकता हूं?
उदाहरण के लिए पर नीचे देखो:
type
TBox = class
private
class var FList: TList<Integer>;
class constructor Create;
end;
implementation
class constructor TBox.Create;
begin
{ Initialize the static FList member }
FList := TList<Integer>.Create();
end;
end.
यहाँ मैं वस्तु तुरंत बनाने के लिए जब मैं मुख्य रूप में TBox.Create
फोन जा रहा हूँ?
क्लास कन्स्ट्रक्टरों को अपने वर्ग प्रकार को स्वचालित रूप से शुरू करने के तरीके के रूप में सोचें। उन्हें स्टार्टअप पर स्वचालित रूप से बुलाया जाता है और आपको उन्हें कभी भी अपने कोड से कॉल नहीं करना चाहिए। दूसरे शब्दों में, वर्ग निर्माता इस प्रकार काम करते हैं, जबकि सामान्य कन्स्ट्रक्टर आपके चर पर चलते हैं। –
तो मैं उस से बच सकता हूं और केवल क्लासिक कन्स्ट्रक्टर की देखभाल कर सकता हूं? –
यह इस बात पर निर्भर करता है कि आप क्या करना चाहते हैं। एक वर्ग var उस प्रकार के लिए वैश्विक चर का एक प्रकार है और कुछ मामलों में उपयोगी हो सकता है। –