2010-02-22 17 views
5

मेरे पास एक कक्षा है, जिसमें से स्टब नीचे दिखाया गया है। अगर मैं सार्वजनिक कन्स्ट्रक्टर को नहीं हटाता तो कोड विश्लेषण पकड़। लेकिन मुझे उत्सुकता है कि एक मुहरबंद वर्ग पर क्यों जरूरी है? नीचे दिखाए गए विशेष वर्ग में केवल स्थिर विधियां हैं। सार्वजनिक निकालने के लिए सिर्फ निजी कन्स्ट्रक्टर को शामिल करना अच्छा अभ्यास क्यों होगा?मुहरबंद कक्षा - सार्वजनिक कन्स्ट्रक्टर को क्यों हटाएं?

public sealed class ParseFile 
    { 
     /// <summary> 
     /// Remove the public constructor to satisfy CA1053. 
     /// </summary> 
     private ParseFile() 
     { 
     } 
    } 

उत्तर

11

हैं कि यह चेतावनी है क्योंकि वर्ग बंद है नहीं मिल रहे हैं, लेकिन क्योंकि यह (प्रभावी रूप से) है एक स्थिर वर्ग।

एक सार्वजनिक निर्माता का अर्थ है कि कक्षा में उदाहरण विधियां हैं - कक्षाएं जिन्हें अन्यथा विज्ञापित नहीं करना चाहिए।

6

आप एक वर्ग केवल साझा तरीकों है कि है, तो तुम क्यों करने की जरूरत है यह का एक उदाहरण बना सकता हूँ?

केवल विधियों के साथ कक्षा का एक उदाहरण सिस्टम है। गणित वर्ग। यह में एक निजी कन्स्ट्रक्टर है, क्योंकि यह के लिए इसे बनाने योग्य नहीं है (और इसका कोई मतलब नहीं है)।

संपादित करें: स्रोत http://social.msdn.microsoft.com/Forums/en-US/vstscode/thread/8addbc70-f720-4d0b-85ce-2bdf52e32f77

सवाल कारण है कि मैं इसे निजी बनाने चाहिए, लेकिन क्यों सार्वजनिक रहना चाहिए। हमेशा आवश्यक न्यूनतम पहुंच प्रदान करें।

+1

आप स्रोत लिंक को शामिल करना भूल गए: http://social.msdn.microsoft.com/Forums/en-US/vstscode/thread/8addbc70-f720-4d0b-85ce-2bdf52e32f77 –

+1

सत्य (ब्लश) ... अभी भी मुझसे थोड़ा सा है .... – anthares

14

यदि केवल स्थिर विधियां हैं, तो इसे एक स्थिर वर्ग के रूप में घोषित करें, और रचनाकारों के बारे में चिंता करना बंद करें।

public static class ParseFile 
{ 
} 
2

सभी स्थैतिक विधि वाले वर्ग को कभी भी कन्स्ट्रक्टर की आवश्यकता नहीं होती है क्योंकि इसे किसी नए कीवर्ड के साथ तत्काल नहीं किया जाता है। तो आपको कोई सार्वजनिक कन्स्ट्रक्टर की आवश्यकता नहीं है।

3

मुहरबंद स्टेटिक के समान नहीं है। एक स्थिर वर्ग का अर्थ है कि आप नए कीवर्ड के साथ कक्षा का उदाहरण नहीं बना सकते हैं। एक मुहरबंद वर्ग का मतलब है कि आप उस वर्ग को नहीं बना सकते जो इससे प्राप्त होता है।

+0

अच्छा बिंदु। मैंने इसे अनदेखा किया। –

+2

आप इसे पहले ही जानते हैं, लेकिन 'स्थिर 'सी # चीनी है जो' मुहरबंद अमूर्त 'वर्ग घोषित करने के लिए है। :) सी # भाषा विनिर्देश अतिरिक्त प्रतिबंध जोड़ता है कि इस प्रकार के कारण इस तथ्य के कारण केवल स्थिर सदस्य होते हैं कि एक सीलबंद सार प्रकार के उदाहरण सदस्य कभी कॉल करने योग्य नहीं होंगे। –

+0

@ 280Z28 क्या आप निश्चित हैं ?? मैंने एक सीलबंद अमूर्त वर्ग घोषित करने की कोशिश की है और एक संकलन त्रुटि प्राप्त कर रही है जिसमें कहा गया है कि एक अमूर्त वर्ग को सील नहीं किया जा सकता है या स्थिर – Pedro

संबंधित मुद्दे