पार्स विभिन्न स्वरूपों की आदेश पंक्ति तर्क

वोट
0

मैं विभिन्न स्वरूपों के लिए आदेश पंक्ति तर्क कन्वर्ट करने के लिए कोशिश कर रहा हूँ। उदाहरण के लिए, अगर मैं एक विशिष्ट उपयोगकर्ता पाने के लिए कोशिश कर रहा हूँ, यह होगा GetUser=UserName, लेकिन मैं यह भी तरीकों कि बराबर होती है जैसे संकेत है, की आवश्यकता नहीं है GetAllUsers। अभी मैं इस समय पर बंटवारे हूँ =लेकिन मुझे क्या करना है कि सभी आदेशों के लिए जरूरत नहीं है। मैं इसे एक सशर्त है, जहां अगर के लिए सेटिंग की कोशिश की =पता चलते ही बंट जाएगा, अन्यथा यह सिर्फ एक स्ट्रिंग के रूप में तर्क लगेगा, लेकिन मैं हो रही हैCannot implicitly convert type 'string' to 'System.Collections.Generic.Dictionary<string, string>

कोड:

 public static Dictionary<string, string> ParseArgs(string[] args)
        {
            Dictionary<string, string> results = new Dictionary<string, string>();
            foreach (string arg in args)
            {
                string[] parts = arg.Split('=');
                if (parts.Length > 1)
                {
                    results[parts[0]] = parts[1];
                    continue;
                }
                else
                {
                    results = Convert.ToString(arg);
                }

            }
            return results;
        }

13/01/2020 को 23:52
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


2 जवाब

वोट
0

आप एक शब्दकोश वस्तु के लिए एक स्ट्रिंग आवंटित करने के लिए कोशिश कर रहे हैं। आप एक संग्रह (शब्दकोश) की तरह चाहते हैं तो आपको इतना की तरह जोड़ें विधि का उपयोग करना चाहिए:

    foreach (string arg in args)
    {
        string[] parts = arg.Split('=');
        if (parts.Length > 1)
        {
            //results[parts[0]] = parts[1];
            results.Add(parts[0], parts[1]);
            continue;
        }
        else
        {
            results.Add("GetUser", arg);
        }

    }

मैं इसे यहाँ मूल्य के रूप में "GetUser" होने के लिए मजबूर कर दिया है, लेकिन आप वास्तव में कुछ अलग कर सकते हैं। आपका शब्दकोश कुंजी-मान जोड़ों उपयोग कर रहा है और आप परिणामों [ "GetUser"] "GetUser" के लिए एक स्ट्रिंग वापस जाने के लिए कह सकते हैं कि। तुम भी इस्तेमाल कर सकते हैं TryGetValue मान्य करने के लिए है कि GetUser वास्तव में प्रदान किया गया।

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

14/01/2020 को 00:17
का स्रोत उपयोगकर्ता

वोट
0

किसी और भाग में, आप बयान के माध्यम से शब्दकोश में असाइन स्ट्रिंग की कोशिश कर रहे results = Convert.ToString(arg);

तो, जैसा कि नीचे दिखाया की तरह कुछ के साथ और भाग को बदल दें:

public static Dictionary<string, string> ParseArgs(string[] args)
{
     Dictionary<string, string> results = new Dictionary<string, string>();
     foreach (string arg in args)
     {
          string[] parts = arg.Split('=');
          if (parts.Length > 1)
          {
               results[parts[0]] = parts[1];
               // continue; no need to use continue, as there are no more statements after this if-else, loop will anyway continue. but please uncomment if you have any in your actual code.
          }
          else
          {
               results[arg] = arg; // assuming arg string in args won't repeat, meaning its unique. Otherwise please use ContaineKey if condition before adding or over-writing.
           }
     }
     return results;
}
14/01/2020 को 00:49
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more