दिलचस्प पोस्ट
ऑपरेटर को ओवरराइड कैसे करें? रन-टाइम पर एक और दृश्य के साथ एक दृश्य को बदलने के लिए एंड्रॉइड लेआउट अजाक्स पुश सिस्टम UIWebView के scalesPageToFit के लिए WKWebView समकक्ष क्या कोई सही आबादी का उपयोग करता है? सॉकेट प्रोग्रामिंग एकाधिक ग्राहक को एक सर्वर पर क्या कोई सम्मिलन आदेश सुरक्षित रखने के लिए भी है जो सूची को लागू करता है? सरल जावा एईएस एन्क्रिप्ट / डिक्रिप्ट उदाहरण इंटरकनेक्टिव एंट्री विजेट सामग्री को टेकिनटर में मान्य कर रहा है XmlSerializer प्रदर्शन समस्या जब XmlRootAttribute निर्दिष्ट करते हैं पता कैसे करें कि मैट्रिक्स एकवचन है? मुद्रण सामग्री के लिए जेएसपी सहायक वर्ग C ++ आउटपुट ऑपरेटर (printf समकक्ष) के साथ अग्रणी शून्य प्रिंट करें? सीचडीबी और काउचबेस के बीच का अंतर जावा: सिस्टम। एक्सट () को कॉल करने वाले तरीकों का परीक्षण कैसे करें?

दबाने वाली "कभी भी प्रयोग नहीं किया जाता" और सी # में चेतावनियों को "असाइन नहीं किया जाता"

मेरे पास सी # प्रोजेक्ट में एक HTTPSystemDefinitions.cs फ़ाइल है जो प्रबंधित कोड द्वारा उपभोग के लिए मूल विंडो आईएसएपीआई का मूल रूप से वर्णन करता है।

इसमें आईएसएपीआई के लिए प्रासंगिक संरचनाओं का पूरा सेट शामिल नहीं है, जो कोड द्वारा खपत होते हैं या नहीं। इन संरचनाओं के सभी क्षेत्र के सदस्यों को संकलन करने पर निम्नलिखित चेतावनी पैदा हो रही है: –

चेतावनी फ़ील्ड 'UnionSquare.ISAPI.HTTP_FILTER_PREPROC_HEADERS.SetHeader' को कभी भी असाइन नहीं किया जाता है, और हमेशा इसका डिफ़ॉल्ट मान रिक्त होगा

या

चेतावनी फ़ील्ड 'UnionSquare.ISAPI.HTTP_FILTER_PREPROC_HEADERS.HttpStatus' का उपयोग कभी नहीं किया जाता है

क्या #pragma warning disable अक्षम किया जा सकता है? यदि ऐसा है तो संबंधित त्रुटि संख्या क्या होगी? अगर वहाँ कुछ भी नहीं है मैं कर सकता हूँ? ध्यान रखें कि मैं केवल इस फाइल के लिए क्या करना है, यह महत्वपूर्ण है कि मुझे चेतावनी मिलें जैसे कि ये अन्य फाइलों से आ रही है।

संपादित करें

उदाहरण संरचना: –

 struct HTTP_FILTER_PREPROC_HEADERS { // // For SF_NOTIFY_PREPROC_HEADERS, retrieves the specified header value. // Header names should include the trailing ':'. The special values // 'method', 'url' and 'version' can be used to retrieve the individual // portions of the request line // internal GetHeaderDelegate GetHeader; internal SetHeaderDelegate SetHeader; internal AddHeaderDelegate AddHeader; UInt32 HttpStatus; // New in 4.0, status for SEND_RESPONSE UInt32 dwReserved; // New in 4.0 } 

Solutions Collecting From Web of "दबाने वाली "कभी भी प्रयोग नहीं किया जाता" और सी # में चेतावनियों को "असाइन नहीं किया जाता""

हां, इन्हें दबाया जा सकता है

आम तौर पर, मैं चेतावनी को दबाने का विरोध करता हूं, लेकिन इस मामले में, इंटरॉप के लिए इस्तेमाल किए गए स्ट्रैक्ट्स को कुछ फ़ील्ड उपस्थित होने की आवश्यकता है, भले ही आप इसका इस्तेमाल कभी भी करना (या कर सकते हैं) का इरादा नहीं करते हैं, इसलिए इस मामले में मुझे लगता है कि इसे उचित होना चाहिए ।

आम तौर पर, उन दो चेतावनियों को दबाने के लिए, आप अपमानजनक कोड को ठीक कर देंगे। पहले ("… का उपयोग कभी नहीं किया जाता है") आमतौर पर कोड के पिछले संस्करणों से बचा हुआ कोड-गंध है। शायद कोड नष्ट कर दिया गया था, लेकिन फ़ील्ड पीछे छोड़ दिया गया था

दूसरा आमतौर पर गलत रूप से प्रयुक्त क्षेत्रों के लिए कोड-गंध है। उदाहरण के लिए, आप गलत संपत्ति को संपत्ति के नए मान को वापस लिख सकते हैं, कभी बैकिंग फ़ील्ड पर लिख नहीं सकते हैं।


" फील्ड XYZ के लिए चेतावनियों को दबाने के लिए कभी भी उपयोग नहीं किया जाता है ", आप ऐसा करते हैं:

 #pragma warning disable 0169 ... field declaration #pragma warning restore 0169 

" फील्ड XYZ के लिए चेतावनियों को दबाने के लिए कभी भी असाइन नहीं किया जाता है, और हमेशा इसका डिफ़ॉल्ट मान XX होगा ", आप ऐसा करते हैं:

 #pragma warning disable 0649 ... field declaration #pragma warning restore 0649 

ऐसी चेतावनी संख्याओं को ढूंढने के लिए (यानी मुझे 0169 और 0649 का प्रयोग कैसे करना है), आप ऐसा करते हैं:

  • कोड को सामान्य रूप से संकलित करें, यह दृश्य स्टूडियो में आपकी त्रुटि सूची में कुछ चेतावनियां जोड़ देगा
  • आउटपुट विंडो पर स्विच करें, और बिल्ड आउटपुट, और उसी चेतावनी के लिए खोज करें
  • प्रासंगिक संदेश से 4-अंकीय चेतावनी कोड की प्रतिलिपि बनाएँ, जो इस प्रकार दिखना चाहिए:

    C: \ Dev \ VS.NET \ ConsoleApplication19 \ ConsoleApplication19 \ Program.cs (10,28): चेतावनी CS 0649 : फ़ील्ड 'कंसोल अनुप्रयोग 19.प्रोग्राम.dwReserved' को कभी भी असाइन नहीं किया जाता है, और हमेशा इसका डिफ़ॉल्ट मान होगा


चेतावनी : @ जेन हन्ना की टिप्पणी के अनुसार, शायद कुछ चेतावनियां इस के क्रम में हैं, भविष्य के खोजकर्ताओं के लिए इस सवाल और जवाब का जवाब।

  • सबसे पहले, और सबसे महत्वपूर्ण, एक चेतावनी को दबाने का कार्य सिरदर्द के लिए गोलियां निगलने जैसा है। ज़रूर, यह कभी-कभी सही काम हो सकती है, लेकिन यह एक पकड़-सब समाधान नहीं है कभी-कभी, सिरदर्द एक वास्तविक लक्षण है, जिसे आपको मुखौटा नहीं होना चाहिए, चेतावनी के साथ भी। चेतावनियों को उनके कारणों को तय करके इलाज के लिए प्रयास करना हमेशा सबसे अच्छा होता है, बजाए उन्हें निर्बाध रूप से बिल्ड आउटपुट से निकालने की बजाय।
  • यह कहने के बाद, अगर आपको चेतावनी को दबाने की आवश्यकता है, तो ऊपर दिए गए पैटर्न का पालन करें। पहली कोड पंक्ति, #pragma warning disable XYZK को निष्क्रिय कर देती है, शेष फाइल के लिए चेतावनी को अक्षम करता है, या कम से कम जब तक संगत #pragma warning restore XYZK जाता है। आप इन चेतावनियों को निष्क्रिय करने वाली पंक्तियों की संख्या को न्यूनतम करें उपरोक्त पैटर्न केवल एक पंक्ति के लिए चेतावनी को अक्षम करता है।
  • इसके अलावा, जैसा कि जॉन ने उल्लेख किया है, यह एक टिप्पणी है कि आप यह क्यों कर रहे हैं यह एक अच्छा विचार है। किसी चेतावनी को अक्षम करना निश्चित रूप से कोड-गंध है, जब बिना कारण हो, और कोई टिप्पणी भविष्य के संरक्षक को समय व्यतीत करने से रोक सकती है या तो सोच रही है कि आपने ऐसा क्यों किया, या इसे हटाने और चेतावनियों को ठीक करने का प्रयास करते हुए

इन चेतावनियों को ठीक करने के लिए एक अन्य "समाधान" संरचना public बना कर है चेतावनियां तब जारी नहीं की जाती हैं क्योंकि कंपाइलर यह नहीं जान सकता कि विधानसभा के बाहर फ़ील्ड (असाइन किए गए) का उपयोग किया जा रहा है या नहीं

उस ने कहा, "इंटरॉप" घटकों को आम तौर पर सार्वजनिक नहीं होना चाहिए, बल्कि internal या private

मुझे System.ComponentModel.INotifyPropertyChanged लिए कार्यान्वयन कंकाल उत्पन्न करने के लिए वी.एस. मिला और ईवेंट को CS0067 चेतावनियों को ट्रिगर करने वाले फ़ील्ड के रूप में लागू किया गया था।

स्वीकृत जवाब में दी गई समाधान के विकल्प के रूप में मैंने फ़ील्ड को गुणों में बदल दिया और चेतावनी गायब हुई

यह समझ में आता है क्योंकि संपत्ति घोषणाएं वाक्यविन्यास चीनी एक फ़ील्ड प्लस गेस्टेटर और / या सेटर विधियों (मेरे मामले में जोड़ें / निकालने) में संकलित की जाती हैं, जो फ़ील्ड संदर्भ देते हैं। यह कंपाइलर को संतुष्ट करता है और चेतावनियां उठाई नहीं जाती हैं:

 struct HTTP_FILTER_PREPROC_HEADERS { // // For SF_NOTIFY_PREPROC_HEADERS, retrieves the specified header value. // Header names should include the trailing ':'. The special values // 'method', 'url' and 'version' can be used to retrieve the individual // portions of the request line // internal GetHeaderDelegate GetHeader {get;set;} internal SetHeaderDelegate SetHeader { get; set; } internal AddHeaderDelegate AddHeader { get; set; } UInt32 HttpStatus { get; set; } // New in 4.0, status for SEND_RESPONSE UInt32 dwReserved { get; set; } // New in 4.0 } 

सी / सी ++ उपयोगकर्ताओं (void)var; अप्रयुक्त चर चेतावनियों को दबाने के लिए मैंने अभी खोज की है कि आप bitwise ऑपरेटरों के साथ सी # में अप्रयुक्त चर चेतावनी को दबा सकते हैं:

  uint test1 = 12345; test1 |= 0; // test1 is still 12345 bool test2 = true; test2 &= false; // test2 is now false 

दोनों भाव VS2010 C # 4.0 और मोनो 2.10 कंपाइलर्स में अप्रयुक्त चर चेतावनियों का उत्पादन नहीं करते हैं।