एक समस्या पर एक मुद्दा सामने आया और मुझे पता था कि इसे कैसे ठीक किया जाए, लेकिन यह मेरे लिए विशिष्ट संकलक की एक विशेषता का खुलासा किया। व्यक्ति को त्रुटि मिल रही थी "एम्बेडेड कथन एक घोषणा या लेबल वाला कथन नहीं हो सकता है" क्योंकि उनके पास कोई ब्रैकेट वाले किसी कथन के बाद एक चर का घोषणापत्र था। यह उनका इरादा नहीं था, लेकिन उन्होंने अगर कथन के तुरंत बाद कोड की रेखा पर टिप्पणी की थी, जिसने परिवर्तनीय घोषणा को निष्पादित करने के लिए कोड की वास्तविक रेखा को घोषित किया था। वैसे भी, यह पृष्ठभूमि है, जो मुझे इस पर लाती है।बयान
निम्नलिखित कोड गैरकानूनी है
if (true)
int i = 7;
हालांकि, अगर आप लपेट कि कोष्ठक में, यह सब कानूनी है।
if (true)
{
int i = 7;
}
कोड का कोई भी टुकड़ा उपयोगी नहीं है। फिर भी दूसरा एक ठीक है। इस व्यवहार के लिए विशेष रूप से स्पष्टीकरण क्या है?
मैं मानता हूँ में जोड़ा गया कोष्ठक, यह बिल्कुल मतलब नहीं है एक घोषित करने के लिए इस तरह से परिवर्तनीय। फिर भी दूसरे उदाहरण में पूरी तरह से बेकार परिवर्तनीय घोषणा ठीक है। न तो मूल्य है। क्या यह केवल ब्रैकेटिंग का मामला है, और कुछ नहीं? (मैं उस रास्ते से, साथ रह सकता हूं।) –
हां। जब आप ब्रैकेट्स को शामिल करते हैं तो आपके इरादे संकलक के लिए बिल्कुल स्पष्ट होते हैं, इसलिए यह इसकी अनुमति देगा। सी # कंपाइलर इसे ब्रैकेट के बिना अनुमति नहीं देगा, क्योंकि यह स्पष्ट नहीं है कि आपका वास्तविक इरादा बेकार चर घोषित करना है। –
लेकिन दूसरा मूल्य का बहुत अच्छा हो सकता है - यदि, उदाहरण के लिए, मूल्य को उस विधि से पुनर्प्राप्त किया जा रहा है जिसमें साइड इफेक्ट्स हैं। –