आपको विचार करना होगा कि आंशिक विधि लागू नहीं होने पर क्या होता है।
तब क्या होता है कि विधि के सभी कॉल सिर्फ तब तक छीन दिए जाते हैं जैसे कि वे कभी नहीं हुए।
तो एक तरीका है बाहर का उपयोग कर के लिए, यह इस तरह दिखेगा:
stream s;
GetStream(out s);
s.Write(...);
और संकलित किया है जैसे कि यह कहा था कि यह:
stream s;
s.Write(...);
इस कोड क्योंकि s
नहीं किया गया है की अनुमति नहीं है प्रारंभ। गारंटी है कि जब आप Write
विधि को कॉल करने का प्रयास करते हैं तो वैरिएबल प्रारंभ किया जाएगा, GetStream
पर कॉल के साथ जुड़ा हुआ था।
यह डेटा लौटने के तरीकों के समान है। चूंकि पूरे विधि कॉल को संकलित नहीं किया गया है यदि आपने आंशिक विधि लागू नहीं की है, तो आपको यह विचार करने की आवश्यकता है कि आप क्या कर सकते हैं और क्या नहीं कर सकते हैं और फिर भी वह कोड छोड़ दें जो इसे वैध कहता है। out
और मूल्यों को वापस करने के मामले में, इसमें कॉलिंग कोड को अमान्य या अधूरा छोड़ने की क्षमता है, इसलिए इसकी अनुमति नहीं है।
ref
का सवाल है, जो मान्य है के बाद से प्रारंभ बुला कोड द्वारा ध्यान रखा गया है:
stream s = null;
GetStream(ref s); // may be stripped out
if (s != null)
s.Write(...);
स्रोत
2010-08-10 20:40:33
अच्छी तरह से समझाया! – AlwaysAProgrammer