2012-09-21 15 views
9

कैसे बिल्कुलstring[] args एक सी # मुख्य विधि में आबादी है?सी # मुख्य विधि में 'स्ट्रिंग [] args' कैसे आबादी है?

उदाहरण के लिए, सफेद जगह छीन ली गई है? क्या तत्वों में से कोई भी खाली स्ट्रिंग या शून्य है? सिंगल और डबल कोट्स कैसे संभाले जाते हैं?

MSDN doesn't explain how और केवल

मुख्य विधि के पैरामीटर का कहना है एक स्ट्रिंग सरणी है कि कमांड लाइन तर्क

+3

"उदाहरण के लिए, सफेद जगह छीन ली गई है?" --- आप कोशिश क्यों नहीं करते? ऐसा करने में 1 मिनट लगेंगे। – zerkms

+0

यहां कुछ जानकारी है, हालांकि व्हाइटस्पेस इस दस्तावेज़ में कोई उपस्थिति नहीं लग रहा है। http://msdn.microsoft.com/en-us/library/acy3edy3.aspx –

+0

एक और दिलचस्प पढ़ा गया: http://stackoverflow.com/questions/6605956/what-happens-when-a-net-plication-is- –

उत्तर

4

मेरा मानना ​​है कि मुख्य को दिए गए तर्क वे हैं जो सूची के पहले को हटाने के बाद Environment.GetCommandLineArgs() द्वारा लौटे गए हैं। एमएसडीएन बैकस्लाश से संबंधित आश्चर्यजनक जटिल तर्क का वर्णन करता है:

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

यदि कोई डबल उद्धरण चिह्न दो या यहां तक ​​कि बैकस्लाश की संख्या का पालन करता है, प्रत्येक कार्यवाही बैकस्लैश जोड़ी को एक बैकस्लैश के साथ प्रतिस्थापित किया जाता है और डबल उद्धरण चिह्न हटा दिया जाता है। यदि एक डबल उद्धरण चिह्न बैकस्लाश की एक विषम संख्या का पालन करता है, जिसमें केवल एक ही शामिल है, प्रत्येक पिछली जोड़ी को एक बैकस्लैश के साथ प्रतिस्थापित किया जाता है और शेष बैकस्लैश हटा दिया जाता है; हालांकि, इस मामले में दोहरा उद्धरण चिह्न टिप्पणी में निकाल दिया जाता है नहीं।

धन्यवाद Christian.K करने के लिए।

4

जब आप एक प्रक्रिया शुरू का प्रतिनिधित्व करता है, तो आप के रूप में एक स्ट्रिंग पारित कर सकते हैं अपने तर्क। उन्हें व्यवस्थित और विभाजित कैसे किया जाता है पूरी तरह से आप पर निर्भर करता है।

तो विंडोज कमांड लाइन का उपयोग कर, तो आप भाग गया:

myexe.exe "Hello World" Joe Bloggs 

आपका सरणी होते हैं:

{"Hello World", "Joe", "Bloggs"} 

लेकिन यह केवल (जो खास तरह से अलग हो रहा है नमस्ते विश्व के आसपास उद्धरण नोटिस हटा दिए जाते हैं) क्योंकि नेट फ्रेमवर्क स्वचालित रूप से आपके लिए इसे पार्स कर रहा है।

+1

यह कमांड लाइन पर निर्भर करता है ?! ठीक है, यह दिलचस्प है। –

+1

मुझे नहीं लगता कि आप खिड़कियों में तारों की एक सरणी में गुजर सकते हैं। आप एक स्ट्रिंग में पास कर सकते हैं, और विभाजन कॉलिंग प्रक्रिया तक है। इसे विभाजित करने के लिए सम्मेलन हैं, लेकिन वे बस यही हैं। कैली विभिन्न नियमों का उपयोग करना चुन सकता है। | मेरा मानना ​​है कि यह यूनिक्सॉयड सिस्टम पर अलग है, लेकिन मैं उन पर कोई विशेषज्ञ नहीं हूं। – CodesInChaos

+0

मुझे यकीन है कि विंडोज़ argc + argv का उपयोग करता है जैसे * nix करता है। – PhonicUK

0

आपके प्रोग्राम में दिए गए पैरामीटर ऑपरेटिंग सिस्टम निर्भर हैं।

आपको नल, खाली तार, स्ट्रिप व्हाइट-स्पेस के लिए तर्कों का परीक्षण करना चाहिए, और अपने प्रोग्राम के भीतर सिंगल/डबल कोट्स को संभालना चाहिए (आवश्यकतानुसार)।

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