के रूप में एक स्पष्ट कलाकार को पास करना मेरे पास एक कक्षा है जो अधिकतर बड़े सरणी और कुछ संबंधित हाउसकीपिंग के लिए एक रैपर है। मेरे पास एक ऐसा फ़ंक्शन है जो रेफ पैरामीटर लेता है। जब मैं फ़ंक्शन में कक्षा का उदाहरण पास करता हूं, तो मैं सरणी भेजना चाहता हूं।एक रेफ पैरामीटर (सी #)
मुझे स्पष्ट रूप से माना जाता है। मान लें कि मेरे पास कुछ फ़ंक्शन है जिसमें बाइट [] रेफ पैरामीटर है।
public void SomeFunction(ref byte[] someBytes);
और मेरे पास एक ओवरलोडेड स्पष्ट कलाकार के साथ कुछ कक्षा है।
class SomeClass
{
byte[] someBytes;
public static explicit operator byte[](SomeClass someInstance)
{
return someInstance.someBytes;
}
}
अब मैं एक पैरामीटर
SomeClass someInstance = new SomeClass();
SomeFunction(ref (byte[]) someInstance);
संकलक शिकायत "एक रेफरी या बाहर तर्क एक आबंटित चर होना चाहिए" के रूप में वर्ग के साथ समारोह कॉल करना चाहते हैं। मुझे यकीन नहीं है कि मैं संकलक को ठीक से मालिश करने में असफल रहा हूं या यदि आप वास्तव में ऐसा नहीं कर सकते हैं।
मैं एक संपत्ति या समारोह वापसी मान माना जाता है, लेकिन आप रेफरी द्वारा उन पारित नहीं हो सकता है (और अपने आप को शिक्षित करने के बाद मैं देख रहा हूँ क्यों ...)
मैं सरणी एक सार्वजनिक क्षेत्र बनाने के लिए नहीं करना चाहते हैं , लेकिन यह संकलक को संतुष्ट करता है। मैं लगता मैं बस के साथ सरणी संदर्भ के लिए एक स्थानीय चर बना सकते हैं, लेकिन इससे पहले और प्रत्येक समारोह कॉल के बाद कोड की एक अतिरिक्त पंक्ति है ...
संपादित करें: यह देखते हुए कि SomeFunction द्वारा लिखा गया था लायक हो सकता है एक तीसरी पार्टी और मुझे इसे बदलने की पहुंच नहीं है। इससे भी बदतर, मुझे नहीं लगता कि उनके पैरामीटर को वास्तव में रेफरी करने की जरूरत है ...
तो यह पता चला है कि व्यावहारिक समाधान या तो एक सार्वजनिक क्षेत्र या एक छोटी विधि जिसका एकमात्र उद्देश्य में पारित करने के लिए कुछ स्थानीय चर के निर्माण को कवर करने के लिए है हो सकता है। मैं कुछ और खुदाई और जेनरिक मदद कर सकता है था भी – ajs410
ठीक है, कुछ सरल अद्यतन करने के लिए एक साधारण सेटर पर्याप्त होगा। एक विकल्प के रूप में, आप एक इंटरफ़ेस बना सकते हैं कि कुछ फ़ंक्शन एक तर्क के रूप में लेता है और कुछ इंस्टेंस लागू करता है, और उस इंटरफ़ेस के माध्यम से अपने तर्क को कार्यान्वित करता है। –