पर एक संदर्भ देता है, मैं वर्तमान में सी # में विंडोज प्रपत्रों के साथ काम कर रहा हूं। यह के दौरान, मैंने किया था निम्नलिखितसी # में ऑब्जेक्ट कास्टिंग करना हमेशा प्रारंभिक ऑब्जेक्ट
void HideButtons(object sender, EventArgs e)
{
Button hider = ((Button)sender);
foreach(Button tohide in hider.Parent.Controls)
tohide.Hide();
hider.Show();
hider.Text = "UnHide";
hider.Click -= new EventHandler(HideButtons);
hider.Click += new EventHandler(ShowButtons);
}
इस कोड के प्रयोजन के लिए एक बटन जो कंटेनर यह अपने आप को छोड़कर में है में अन्य सभी बटन छुपाता है करने के लिए, और फिर एक को सामने लाएं बटन जो करता है में बदल जाते हैं विपरीत में एक ही बात है।
अब, यह सब ठीक है और अच्छा है, सिवाय इसके कि, जैसा कि मैं संकलित करता हूं, मुझे लगता है कि मैंने खुद को महसूस किया है। हाइडर अपनी अनूठी वस्तु है, ((बटन) प्रेषक से वापसी)। यह आवश्यक रूप से प्रेषक का संदर्भ नहीं है, और यह कोड शायद कुछ भी नहीं करेगा।
लेकिन कम और देखें, यह ठीक वैसे ही काम करता है जैसा मैं चाहता था और शुरू में ऐसा लगता था। जो मुझे सोचने के लिए मिला, क्या एक कलाकार हमेशा मूल वस्तु का संदर्भ देता है? यदि नहीं, तो मैं उस (बटन) प्रेषक = प्रेषक की गारंटी कैसे दूं?
मुझे पता है कि युगल/ints के लिए ऐसा नहीं है, के रूप में
public static int Main()
{
int a;
double b;
b = 10.5;
a = (int)b;
a++;
return 0;
}
एक किया जा रहा है 11, और ख जा रहा है 10.5 लेकिन उस युगल/ints structs होने के कारण हो सकता है के साथ समाप्त होता है। यह व्यवहार मुझे चिंतित करता है, और यह जानना अच्छा होगा कि यह हमेशा एक संदर्भ वापस कर देगा ताकि मैं अपनी चिंता का मन आराम कर सकूं।
उत्कृष्ट प्रश्न। यहां कुछ नोट्स दिए गए हैं जब एक कलाकार पहचान को संरक्षित बनाम प्रतिनिधित्व करता है। यह बहुत भ्रमित हो सकता है। http://blogs.msdn.com/ericlippert/archive/2009/03/19/representation-and-identity.aspx –