मैं ई in this stackoverflow questionसाथ सी # 'का उपयोग'
मैं कथन का उपयोग के बारे में उलझन हो रही है के साथ काम करने के लिए कुछ कोड को देखा है उलझन में। मैंने सोचा था कि यह सिर्फ चीजें हैं जो आप, स्मृति रिसाव हो सकता है चिंतित हैं एक WebClient, या इसी तरह की तरह के लिए इस्तेमाल किया गया था ...
वैसे भी:
using (var context = new PrincipalContext(ContextType.Domain))
{
using (var user = UserPrincipal.FindByIdentity(context, "username"))
{
var groups = user.GetAuthorizationGroups();
...
}
}
जब मैं सीमा तक पहुंच जाती var groups = user.GetAuthorizationGroups()
- प्रयोक्ता खाली है , ताकि लाइन NullReference के साथ विफल हो। जब मैं इसे डिबगिंग पर माउस करता हूं तो यह शून्य दिखाता है, फिर स्टेटिक सदस्यों को दिखाता है, और इसमें सभी मान हैं।
यदि मैं कथन का उपयोग करने से लाइन लेता हूं और केवल var user = UserPrincipal.FindByIdentity(context, "username")
उपयोगकर्ता आवश्यकतानुसार पॉप्युलेट किया गया है।
तो क्या चल रहा है ???
संपादित करें: मैं भर गया और एक फर्जी उपयोगकर्ता नाम भेज रहा था। विचित्र रूप से हालांकि जब मैं डीबग के दौरान चर की जांच करता हूं, तो जब आप बोगस उपयोगकर्ता आईडी भेजते हैं तो उपयोगकर्ता पूरी तरह से शून्य होने की अपेक्षा करता है, लेकिन यह उपयोगकर्ता के नीचे दिखाया गया है: शून्य, स्थिर सदस्य, और मेरे पास वर्तमान में लॉग इन किए गए मूल्यों के लिए मूल्य थे। तो मैंने सोचा कि यह संभावित रूप से उपयोग कथन के साथ करना था। चीयर्स!
'उपयोग' कुछ भी है जो 'आईडीस्पोजेबल' लागू करता है। –
अधिक सामान्य शब्दों में, आपको 'उपयोग' कथन (और इस प्रकार 'आईडीस्पोजेबल') के बारे में सोचना चाहिए * संसाधन लीक * को रोकने के लिए उपयोग किया जा रहा है। इस तरह के संसाधन अंततः "स्मृति" हैं लेकिन अधिक अमूर्त भावना (जैसे फ़ाइल हैंडल, डेटाबेस कनेक्शन इत्यादि) में नहीं होना चाहिए। –
"उपयोग" कथन केवल उपयोग के दायरे के अंत में चर को प्रभावित करते हैं, जिस बिंदु पर यह चर का निपटान करता है। क्या आप वाकई अवैध उपयोगकर्ता नहीं हैं? (UserPrincipal के रूप में। FIindByIdentity शून्य नहीं लौटाता है) – Will