में कन्स्ट्रक्टर से रेफ पैरामीटर रखें मूल रूप से मैं कक्षा के उदाहरण के अंदर एक चर के संदर्भ में सक्षम होना चाहता हूं, लेकिन मैं संदर्भ वर्ग बनने के संदर्भ को संदर्भित करना चाहता हूं इसलिए मुझे इसकी आवश्यकता नहीं है पैरामीटर के रूप में कक्षा के अंदर चारों ओर इसे भेजनेसी #: कक्षा
कोड:
int num = 0;
myClass(num);
print num; // output is 0 but i'd like it to be 10 :)
class myClass
{
private int classNumber;
myClass(ref int number)
{
print number; //output is 0
// id like this to be a reference to the refenrence
classNumber = number;
DoSomething();
}
public void DoSomething()
{
ClassNumber = 10;
}
}
मैं यही कारण है कि पूछ रहा हूँ क्योंकि मैं WinForms के साथ काम कर रहा हूँ और एक नया करने के लिए एक वर्ग का एक उदाहरण भेजने के एक मुख्य रूप होने फॉर्म जो कक्षा को संपादित करना चाहिए और उसे वापस भेजना चाहिए .. अभी मैं फॉर्म को .ShowDialog() का उपयोग करता हूं ताकि उपयोगकर्ता को नए रूप में संपादन करते समय मुख्य रूप का उपयोग करने से बचें और उस हथियाने के बाद नए फॉर्मों का डेटा
editForm edtfrm = new editForm(ref instanceOfClass);
edtfrm.showDialog();
//grab the instance back
instanceOfClass = edtfrm.editedClass;
मैं इसे कैसे हल कर सकता हूं? मुझे यह समाधान पसंद नहीं है
आपका दोनों समस्याओं पूरी तरह से असंबंधित लग रहे हैं। क्या आप सुनिश्चित हैं कि समस्या 1 का समाधान आपको समस्या 2 हल करने में मदद करेगा? – Heinzi
"समस्या 2" बस मैं इस दुविधा को कैसे हल करता हूं .. मैं जो संदर्भ देता हूं उसकी प्रतिलिपि बनाकर और फिर जब मैं इसे संपादित कर रहा हूं तो इसे वापस कॉपी कर रहा हूं, समस्या 1 में अगर मैंने "कक्षा संख्या" सार्वजनिक और प्रिंट से पहले किया मैं 'num = myClass.classNumber' – Tistatos
करूँगा क्योंकि 'instanceOfClass' एक संदर्भ है, इसलिए आपको इसे पास करने के लिए' ref' का उपयोग करने की आवश्यकता नहीं है (क्योंकि आप' instanceOfClass' की * सामग्री * को बदलना चाहते हैं, पॉइंटर नहीं अपने आप)। मैं यह भी नहीं देखता कि आपको "उदाहरण वापस लेना" क्यों है ... exampleOfClass और संपादित क्लास अभी भी स्मृति में एक ही ऑब्जेक्ट को इंगित करना चाहिए, नहीं? – Heinzi