c# - Why can't we define a variable inside a while loop? -


हम कर सकते हैं:

  का उपयोग कर (स्ट्रीम एस ..)  < / Pre> 

और:

  के लिए (int i ...)  

हम ऐसा कुछ भी क्यों नहीं कर सकते हैं:

  जबकि ((int i = NextNum ()) gt; {..}  

मुझे यह बहुत उपयोगी और समझदार लगता है।

< / Div>

मैं भाषा डिजाइनर नहीं हूं, लेकिन मैं इसे शिक्षित अनुमान दूँगा।

के अंदर का खंड जबकि () को हर बार निष्पादित किया जाता है, लूप निष्पादित होता है। (अंत में 1 और समय।) कथन int i = NextNum () एक स्थानीय चर घोषित करता है आप एक स्थानीय चर को एक से अधिक बार घोषित नहीं कर सकते हैं।

अद्यतन

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

स्थानीय चर को एक बयान में घोषित किया जाना चाहिए। मुझे विश्वास है कि भाषा को इस तरीके से अलग करना है क्योंकि एक चर घोषणा वास्तव में निष्पादित नहीं की गई है। जब आप कोड की एक पंक्ति देखते हैं जो एक चर बनाता है और उसे एक मान प्रदान करता है, तो वास्तव में यह केवल दो कथन के लिए एक शॉर्टकट है से:

उदाहरण

  शून्य एफ () {int x = 1, y, z = x * 2; }  

बिल्कुल

  शून्य एफ () {int x; X = 1; Int y; Int z; Z = x * 2; }  

वैरिएबल घोषणा हिस्सा स्वयं "निष्पादित" नहीं है। इसका मतलब यह है कि एक विशिष्ट प्रकार के चर के लिए स्टैक पर आवंटित कुछ स्मृति होना चाहिए।

जबकि स्टेटमेंट बुलियन अभिव्यक्ति की अपेक्षा कर रहा है, लेकिन एक अभिव्यक्ति एक बयान से नहीं बन सकती है - बिना किसी विशेष आवरण के कुछ नए व्याकरण।

लूप के लिए विशेष रूप से एक स्थानीय चर घोषित करने के लिए डिज़ाइन किया गया है, लेकिन आप यह ध्यान देंगे कि घोषणा भाग केवल एक बार "निष्पादित" है उपयोग कथन विशेष रूप से स्थानीय चर को घोषित करने के लिए डिज़ाइन किया गया था (और उनमें निपटाना)। यह केवल "निष्पादित" केवल एक बार है

यह भी मान लें कि स्थानीय वैरिएबल घोषणापत्र मूल्य नहीं लौटाता है - यह तब से नहीं हो सकता है जब से आपको कई चर घोषित करने की अनुमति मिलती है। यह कथन क्या होगा?

  int x = 1, y, z = x * 2;  

उपरोक्त विवरण एक स्थानीय-चर-घोषणा है यह एक प्रकार से बना है, और तीन स्थानीय-चर-घोषणाकर्ता इनमें से हर एक वैकल्पिक रूप से एक "=" टोकन और एक स्थानीय-चर-प्रारंभकर्ता को इस प्रकार घोषित करने के लिए स्थानीय वैरिएबल को अनुमति देने के लिए इसका अर्थ होगा कि आप मौजूदा व्याकरण को थोड़ा अलग कर देते हैं प्रकार विनिर्देशक की आवश्यकता होगी, लेकिन एक घोषणाकर्ता को जनादेश देना ताकि वह एक मान वापस कर सके।

इस व्यवहार को सक्षम करने से नकारात्मक पक्ष प्रभाव भी हो सकता है, विचार करें कि जबकि और करें / जबकि स्टेटमेंट विपरीत हैं, लेकिन समानांतर। भाषा डिजाइनर के रूप में, क्या आप स्थानीय वैरिएबल को घोषित करने के लिए do कथन को सक्षम भी कर सकते हैं? मुझे यह संभव के रूप में नहीं दिख रहा है आप पाश के शरीर में वेरिएबल का उपयोग नहीं कर पाएंगे क्योंकि यह अभी तक प्रारंभ नहीं हुआ होता (पहले भाग के रूप में) केवल वक्तव्य संभव होगा, लेकिन तब आप जबकि और do बयान के बीच समानता को नष्ट कर देंगे।


Comments

Popular posts from this blog

asp.net - Javascript/DOM Why is does my form not support submit()? -

sockets - Delphi: TTcpServer, connection reset when reading -

javascript - Classic ASP "ExecuteGlobal" statement acting differently on two servers -