कुछ समय के लिए, मैं अपने सिर को लपेटने की कोशिश कर रहा हूं क्योंकि कुछ "नरभक्षक" वर्गों को संकलित करने की अनुमति क्यों है।कैनिबिल क्लासेस
जारी रखने से पहले, शायद मुझे यह समझाना चाहिए कि मैं "नरभक्षक" वर्ग कहता हूं। निश्चित नहीं है कि मैंने अभी उस शब्द का आविष्कार किया है या यदि यह थोड़ी देर के लिए रहा है या यहां तक कि यदि मैं इसे सही तरीके से उपयोग कर रहा हूं लेकिन यह अभी भी महत्वपूर्ण नहीं है।
मैं मूल रूप से एक कैनिबिल कक्षा को एक कक्षा कहता हूं जो स्वयं को खपत करता है। दूसरे शब्दों में एक वर्ग जिसका इंटरफ़ेस अपने स्वयं के प्रकार के सदस्यों की घोषणा करता है। उदाहरण के लिए:
class Foo
{
public Foo SomeFoo;
}
जैसा कि आप ऊपर देख सकते हैं, कक्षा फू के प्रकार फू (स्वयं) के सदस्य हैं।
अब, पहली बार मैंने यह देखा (लूंग समय पहले) मैंने यह नहीं किया कि यह संकलित करने जा रहा था, लेकिन यह आश्चर्य की बात है कि यह संकलित करता है। जिस कारण से मैंने यह नहीं किया, यह संकलित होगा क्योंकि मेरे लिए यह कुछ प्रकार के पुनरावर्ती दुःस्वप्न चिल्लाता है।
बातें थोड़ा और आगे को मुश्किल करने के लिए, मैं एक ही बात की कोशिश करने का फैसला किया है लेकिन इस तरह के रूप में कक्षा एक struct बनाने:
struct Foo
{
public Foo SomeFoo;
}
दुर्भाग्य से, यह संकलन नहीं करता है, बजाय प्राप्त होने वाले त्रुटि: Struct सदस्य प्रकार 'फू' के 'Foo.SomeFoo' struct लेआउट में एक चक्र
मेरे लिए, एक संकलन त्रुटि अधिक समझ में आता है कि कोई त्रुटि है, लेकिन मुझे विश्वास है कि इस व्यवहार के लिए एक तार्किक स्पष्टीकरण होना सबसे ज्यादा होती है तो मैं यह सोच रहा था कि आप में से कोई भी ई कर सकता है इस व्यवहार को एक्सप्लान करें।
धन्यवाद।
एलओएल कैनिबेल कक्षा। इससे मुझे हंसी मिली :) –
कभी नहीं सुना है कि इसे आमतौर पर एक कैनिबेल कहा जाता है जिसे स्वयं संदर्भित किया जाता है लेकिन मुझे कैनिबेल बहुत बेहतर लगता है। – JoshBerke