दिलचस्प पोस्ट
जावा थ्रेड प्राथमिकता का कोई प्रभाव नहीं है पंक्ति में अंतिम नहीं खाली सेल; एक्सेल VBA जावास्क्रिप्ट समारोह में एक PHP सरणी को पास करें फेसबुक का एफबी। आईआईटी पूरा होने पर कैसे पता लगाया जाए लैम्ब्डा अभिव्यक्ति और विधि ओवरलोडिंग संदेह एक iframe के अंदर इनपुट फ़ील्ड का मूल्य प्राप्त करें iPhone में "निकास कोड 1 के साथ कमांड / बिन / श असफल" को कैसे ठीक करें पुनरावर्तक हेडर या पाद लेख में नियंत्रण कैसे खोजें मैं एक दृश्य ट्रिगर पर एक WPF EventTrigger कैसे हो सकता है जब अंतर्निहित Viewmodel यह करना चाहिए dictates? स्ट्रिंग मान से एंड्रॉइड छवियां सेट करना आईओएस 9 यूआरएल SCHEME के ​​साथ Instagram ऐप खोलने नहीं AJAX शैली jQuery UI टैब्स के अंदर लोड jQuery UI संवाद विंडो मैं बास्श स्क्रिप्ट में स्क्रिप्ट फ़ाइल नाम कैसे जान सकता हूं? मूल्य से सरणी वस्तु को निकाल रहा है समग्र कुंजी हाइबरनेट करें

सी # डबल अर्द्धविराम की अनुमति नहीं है; ; यदि हां, तो क्या कोई विशेष तरीके हैं?

मैं एक बयान लिख रहा हूँ और यह संकलित करता है, लेकिन कंपाइलर [वी.एस.] मुझे कभी नहीं बताती कि मैंने दो बार सेमीकोलन डाल दिया है

इसका मतलब एएसपी.नेट एमवीसी 3 में है

return Json(mydata);; return Json(mydata); 

उनमें से दोनों संकलन करते हैं, लेकिन पहले डिजाइन पैटर्न में गलत है। यह मुझे दो अर्धविरामों के बारे में क्यों नहीं बताता?

अगर दो अर्धविरामों का उपयोग करने का कोई कारण नहीं है, तो यह एक त्रुटि क्यों नहीं दिखाती?

यदि इसका विशेष उपयोग होता है, तो कृपया मुझे दिखाएं कि सी # में एक बयान लिखने के लिए दो अर्धवियों की आवश्यकता है।

Solutions Collecting From Web of "सी # डबल अर्द्धविराम की अनुमति नहीं है; ; यदि हां, तो क्या कोई विशेष तरीके हैं?"

नहीं, एक डबल अर्द्ध-बृहदान्त्र की आवश्यकता कभी नहीं होती है मैं थोड़ा आश्चर्यचकित हूं कि कंपाइलर शिकायत नहीं करता है कि यह एक अपठनीय बयान है, लेकिन जाहिरा तौर पर यह कानूनी है यह कोई नुकसान नहीं करेगा, लेकिन समान रूप से यह एक अच्छा विचार नहीं है।

खाली कथन सभी सी-व्युत्पन्न भाषाओं में मान्य है। सबसे आम मुहावरेदार उपयोग एक बयान में है, जैसे:

 for (; ; ) { } 

यदि उनका इसका एक विशेष उपयोग है तो मुझे दिखाएं कि दो सेमीकोलन के लिए सी # में कथन लिखना आवश्यक है

उपरोक्त उदाहरण में, दो अर्धविराम पाठ्यक्रम की आवश्यकता है।

यह एक डबल ;; अनुमति है, ऐतिहासिक कारणों के लिए है। यह सी शैली भाषाओं (जो सी # पर आधारित है) से हैंगओवर है।

सी और सी ++ में प्री-प्रोसेसर मैक्रोज़ की अवधारणा है, जो कोड को संकलित होने से पहले कोड में बदल दिया जाता है उदा। तुच्छ उदाहरण उदाहरण AddAndSquare एक मैक्रो है, फ़ंक्शन नहीं है

 #define AddAndSquare(X,Y) (X+Y)*(X+Y) int Foo() { int a = 1, b = 2; return AddAndSquare(a, b); } 

कंपाइलर के रूप में चला जाता है

 int Foo() { int a = 1, b = 2; return (A+B)*(A+B); } 

आप अपनी प्रारंभिक परिभाषा के अनुसार मैक्रोज़ को फिर से परिभाषित कर सकते हैं, आप उन्हें फिर से परिभाषित कर सकते हैं ताकि वे बिल्कुल भी मौजूद न हों।

एक अभिप्राय मैक्रो #define ASSERT(c) if(!c) throw new AssertionFailedException() को देखते हुए #define ASSERT(c) if(!c) throw new AssertionFailedException() आप अपने कोडित ASSERT स्टेटमेंट्स से भरे हुए हो सकते हैं

 void Foo(int x) { int y = x + 2; ASSERT(y != 0); int z = x / y; . . . . } 

अब विचार करें कि आप केवल डिबग निर्माण में दावा करना चाहते हैं, लेकिन रिलीज़ के निर्माण में नहीं, रिलीज के लिए मैक्रो को रिक्त करने के लिए #define ASSERT (शाब्दिक रूप से #define ASSERT )। अब जब फू रिलीज़ बिल्ड के लिए कंपाइलर चला जाता है, तो ऐसा लगता है

 void Foo(int x) { int y = x + 2; ; int z = x / y; . . . . } 

अब एक खाली वक्तव्य है जहां एएसएसईआरटी था, क्योंकि वहां कोई बयान नहीं हो सकता है (बिल्ड कॉन्फ़िगरेशन के आधार पर), कंपाइलर को रिक्त कथन को संभालने में सक्षम होना चाहिए।

क्यों इस सम्मेलन को सी # में रखा गया था, जहां C मैक्रोज़ की तरह कुछ नहीं C , मुझे पता नहीं है, लेकिन संभवतः क्योंकि इसका कारण कम या कोई नुकसान नहीं होता है

मुझे लगता है कि कई ; कोड को पार्स करने से पहले संकलक द्वारा लुप्त हो जाता है, इसलिए आपके पहुंच से बाहर नहीं ; कंपाइलर द्वारा अनदेखा किया गया है

इसमें "उन्हें इस्तेमाल करने के लिए कोई कारण नहीं" और "उनका उपयोग करने में अमान्य" के बीच अंतर है। भाषा अपशिष्ट समय और प्रयास को ऐसा करने से आपको निषिद्ध क्यों करना चाहिए, जब यह हानिरहित होता है?

; – बयान विभाजक डबल सेमीकोलन में खाली बयान है , जो कुछ भी नहीं करते हैं।

खाली कथन का उपयोग करना:

 while (Method()) ; 

या

 void F() { //... if (done) goto exit; //... exit: ; } 

जैसा कि आप देख सकते हैं, यह व्यवहार सही है। लेकिन आपके उदाहरण में खाली वक्तव्य के साथ आपके पास पहुंच योग्य नहीं होगा।

फिलहाल एक डबल अर्द्धविराम लिखने का कोई विशेष कारण मेरे मन में नहीं आता है। जहां तक ​​मुझे पता है कि विजुअल स्टूडियो केवल अर्धविराम के बारे में शिकायत करते हैं, जो कि अवांछित व्यवहार को ले सकता है, जैसे निम्नलिखित स्निपेट:

 if (true) ; 

अर्धविराम के रूप में एक खाली निर्देश है, पूरे अगर-खंड बेकार प्रदान किया जाता है। दृश्य स्टूडियो उनके आसपास के कोष्ठक के बिना ऐसे सभी निर्माणों (उपयोग, के लिए, फोरछा, और इसी तरह) के बारे में शिकायत करता है

तो वीएस के लिए निम्न कोड ठीक है:

  if (true) { ; } 

सी # संकलक की अनुमति नहीं है ;; बीच if and else बिना ब्रेसिज़ और कंपाइलर के बीच, नीचे दिए गए केस में त्रुटि फेंक देगा।

 if (condition == true) ; ; else ; 

कम्पाइलर त्रुटि:

 Error CS1513 } expected and one warning "Possible mistaken empty statement" 

इसलिए यदि आप एक semicolon हटाते हैं तो यह पूरी तरह से काम करेगा (या आपको ब्रेसिज़ जोड़ना होगा)।