यह मेरा कोड में से कुछ का एक सरलीकृत संस्करण है:साइकिल जो मौजूद नहीं है
public struct info
{
public float a, b;
public info? c;
public info(float a, float b, info? c = null)
{
this.a = a;
this.b = b;
this.c = c;
}
}
समस्या त्रुटि Struct member 'info' causes a cycle in the struct layout.
मैं मान प्रकार व्यवहार की तरह struct के बाद कर रहा हूँ है। मैं इसे कक्षा और क्लोन सदस्य समारोह का उपयोग करके अनुकरण कर सकता हूं, लेकिन मुझे नहीं लगता कि मुझे इसकी आवश्यकता क्यों है।
यह त्रुटि कैसे सच है? रिकर्सन शायद कुछ समान परिस्थितियों में निर्माण का कारण बन सकता है, लेकिन मैं इस मामले में ऐसा किसी भी तरीके से नहीं सोच सकता। नीचे उदाहरण हैं जो प्रोग्राम को संकलित करने के लिए ठीक होना चाहिए।
new info(1, 2);
new info(1, 2, null);
new info(1, 2, new info(3, 4));
संपादित करें:
समाधान मैं का इस्तेमाल किया "जानकारी" एक वर्ग के बजाय एक struct और यह एक प्रति है कि मैं जब यह गुजर इस्तेमाल किया लौटे करने के लिए एक सदस्य समारोह दे रही है बनाने के लिए किया गया था। प्रभाव में एक संरचना के रूप में एक वर्ग के साथ समान व्यवहार अनुकरण।
मैंने उत्तर की तलाश करते समय निम्न प्रश्न भी बनाया।
Value type class definition in C#?
मेरा अनुमान है कि आपको कम से कम एक कन्स्ट्रक्टर होना चाहिए जो पैरामीटर के रूप में 'जानकारी' नहीं लेता है? आप एक डिफ़ॉल्ट तर्क का उपयोग कर रहे हैं, लेकिन शायद सी # इसे पसंद नहीं है। यदि आप दो रचनाकार बनाते हैं तो क्या होता है? –
बस इसे एक वर्ग बनाएं; यह संरचना डेटा –
'जानकारी नहीं है?' 'सूचक 'के लिए * सूचक नहीं है, यह एक प्रति है। यदि आपको वास्तव में इसकी आवश्यकता है (आपको नहीं करना चाहिए), अपना खुद का नामुमकिन प्रकार क्यों न बनाएं जो 'वर्ग' है? आप 'Nullable' से 'YourNullable ' में परिवर्तित करने के लिए निहित ऑपरेटर भी हो सकते हैं। निस्संदेह, इसका मतलब है 'योर नेलबल' का * बोटलोड *, आपकी कक्षा को 'स्ट्रक्चर' होने से शायद किसी भी बोनस (यदि कोई था) को हटा दें :) सी # 'स्ट्रक्चर सी 'स्ट्रक्चर' नहीं है रों। सभी गणनाओं पर –
Luaan