2008-09-17 14 views
18

में कमांडलाइन पैरामीटर पढ़ने का सबसे अच्छा तरीका कमांडलाइन पैरामीटर में पढ़ने के दो तरीके नीचे दिए गए हैं। पहला तरीका है कि मैं मुख्य में पैरामीटर का उपयोग करके देखने के आदी हूं। दूसरी बार कोड की समीक्षा करते समय मैंने ठोकर खाई। मैंने देखा कि दूसरा पथ और एप्लिकेशन में सरणी में पहला आइटम असाइन करता है लेकिन पहले इसे छोड़ देता है।कंसोल एप्लिकेशन

क्या यह सिर्फ वरीयता है या दूसरा तरीका अब बेहतर तरीका है?

Sub Main(ByVal args() As String) 
    For i As Integer = 0 To args.Length - 1 
     Console.WriteLine("Arg: " & i & " is " & args(i)) 
    Next 

    Console.ReadKey() 
End Sub 



Sub Main() 
    Dim args() As String = System.Environment.GetCommandLineArgs() 

    For i As Integer = 0 To args.Length - 1 
     Console.WriteLine("Arg: " & i & " is " & args(i)) 
    Next 

    Console.ReadKey() 
End Sub 

मैं एक ही सी # में किया जा सकता लगता है, तो यह जरूरी एक vb.net सवाल नहीं है।

उत्तर

20

दूसरा तरीका बेहतर है क्योंकि इसे मुख्य() के बाहर उपयोग किया जा सकता है, इसलिए जब आप रिफैक्टर करते हैं तो यह सोचने के लिए एक कम चीज़ है।

मुझे भी "जादू" पसंद नहीं है जो तर्क को पैरामीटर पैरामीटर में पहली तरह से रखता है।

+1

+ 1 सिंगल जिम्मेदारी के लिए सिद्धांत –

+1

यह है, हाँ main() प्रणाली के बाहर किया जा सकता है। लेकिन क्या होता है जब आप कक्षा को तुरंत चालू करना चाहते हैं और इसे कॉल करना चाहते हैं? आपको कमांड लाइन के माध्यम से इसे आमंत्रित करना होगा, या यह आपके पैरामीटर को अनदेखा कर देगा, है ना? क्या एकाधिक हस्ताक्षर होना बेहतर नहीं होगा, एक पारित तर्क के साथ, और बिना किसी के; जहां बिना उन्हें सिस्टम से निकाला जाएगा। कमांडलाइन और दूसरे को पास करें? –

+0

@ माइकल, ज़ाहिर है, मैं केवल "कंसोल" में, "कोर" असेंबली में उस विधि को कॉल नहीं करूंगा। मैं सेटिंग क्लास या समकक्ष जैसी कुछ चीज़ों के साथ और सोच रहा था, जो इस तर्क को पार्स करने का ख्याल रखता है कि यह बाकी ऐप के लिए उपयोग योग्य है। –

2

पहला तरीका बेहतर है क्योंकि यह आसान है।

1

मेरे लिए पहला तरीका अधिक सहज लगता है क्योंकि मैं अपने सी/सी ++ दिनों से ऐसा कर रहा हूं।

यदि आपकी कमांडलाइन में बहुत सारे स्विच हैं तो कृपया थॉमस की सिफारिश करने के लिए एक नज़र डालें। यह काफी उपयोगी है। मैंने हालांकि सी # पोर्ट पर एक नज़र डाली नहीं है।

सादर,

KGR

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