(this comment से प्रेरित)क्या सी # को निजी कीवर्ड चाहिए?
वहाँ कभी एक स्थिति है जिसमें आप जरूरतprivate
कीवर्ड का उपयोग करने के है?
(दूसरे शब्दों में, एक स्थिति जिसमें कीवर्ड को छोड़ना अलग-अलग व्यवहार होगा)
(this comment से प्रेरित)क्या सी # को निजी कीवर्ड चाहिए?
वहाँ कभी एक स्थिति है जिसमें आप जरूरतprivate
कीवर्ड का उपयोग करने के है?
(दूसरे शब्दों में, एक स्थिति जिसमें कीवर्ड को छोड़ना अलग-अलग व्यवहार होगा)
public class Foo
{
public int Bar { get; private set; }
}
'निजी' शब्द को छोड़कर पहुंच को बदल दिया जाएगा।
सही। मुझे यकीन नहीं है कि मैंने इसके बारे में क्यों नहीं सोचा था। – SLaks
ध्यान दें कि यह सुविधा (मिश्रित दृश्यता एक्सेसर्स) सी # 2 के लिए नई है।0 – SLaks
@ स्लक्स: बेशक, सी # 2.0 छह साल पहले भेज दिया गया था, इसलिए "नया सी # 2.0" ऑक्सीमोरोन का थोड़ा सा है। एक संपत्ति में मिश्रित पहुंच अब लंबे समय से भाषा की एक विशेषता रही है। –
private
रनटाइम व्यवहार के बारे में नहीं है। यह आपके आवेदन को बनाए रखने योग्य है। private
द्वारा छिपा हुआ क्या है कभी भी public
या protected
सदस्यों के माध्यम से अपनी कक्षा के बाहर कोड को प्रभावित कर सकता है।
तो जवाब रनटाइम व्यवहार के लिए 'नहीं' है, डेवलपर व्यवहार के लिए 'हां'!
मैं समझता हूं; मेरा मतलब संकलन-समय और मेटाडाटा व्यवहार था। – SLaks
प्रश्न इस तथ्य के बारे में अधिक प्रतीत होता है कि यदि आप पूरी तरह से एक्सेस संशोधक को छोड़ देते हैं, तो यह लगभग हमेशा डिफ़ॉल्ट रूप से 'निजी' पहुंच में परिणाम देता है। जैसा कि दो उत्तर पोस्टिंग अब सुझाव देते हैं, हालांकि; यह केवल 'लगभग' है। –
एक स्थिति है जिसमें कीवर्ड [
private
] अलग व्यवहार में परिणाम होगा
डेविड यॉ के जवाब दिया सबसे सामान्य स्थिति को छोड़ते हुए में।
Account_generated.cs
में:
// Generated file. Do not edit!
public partial class Account
{
...
private partial class Helper
{
...
}
...
}
AccountHandCoded.cs
में:
public partial class Account
{
...
public partial class Helper
{
...
}
...
}
ऊपर कोड संकलन नहीं होगा यहाँ एक और एक है। Account
का पहला "भाग" नेस्टेड क्लास Helper
private
होने के लिए आवश्यक है। इसलिए Helper
सार्वजनिक करने के लिए हाथ-कोडर द्वारा प्रयास विफल होना चाहिए!
हालांकि, कक्षा के पहले भाग में private
कीवर्ड को छोड़ दिया गया था, सभी संकलित होंगे।
तो partial
वर्गों (और structs, इंटरफेस), पहुँच स्तर के मुक्त घोषणा के लिए
partial class Name
का अर्थ है "अन्य इस वर्ग की 'भागों' तय करने के लिए क्या किया जाना चाहिए पहुँच अनुमति दी जाती है।"
स्पष्ट रूप में डिफ़ॉल्ट पहुंच (जो गैर नेस्टेड प्रकार के लिए internal
और private
है नेस्टेड लोगों के लिए) दे रही है जबकि अर्थ है "इस वर्ग संभव सबसे प्रतिबंधित पहुँच होनी चाहिए, और अन्य 'भागों' है कि इस तथ्य को नहीं बदल सकते।"
मैंने अपना जवाब हटा दिया है क्योंकि यह पता चला है कि आप नामस्थान क्षेत्र में एक निजी प्रतिनिधि नहीं हो सकते हैं। –
बिल्कुल। एक 'निजी' गैर-घोंसला वाला प्रकार कोई समझ नहीं लेता है; यह 'आंतरिक' जैसा ही होगा। – SLaks