Elemzési parancssori argumentumokat különböző formátumokban

szavazat
0

Próbálom átalakítani parancssori paraméterek különböző formátumokban. Például, ha én próbálok egy adott felhasználó lenne GetUser=UserName, de azt is, hogy a módszer nem kell a egyenlőségjel, például GetAllUsers. Most vagyok jelenleg felosztása a =de nem kell tennie, hogy minden parancsot. Próbáltam a beállítás, hogy a feltételes, ahol, ha =érzékeli, hogy szétreped, különben nem fog csak úgy az az érv, mint egy húr, de kapokCannot implicitly convert type 'string' to 'System.Collections.Generic.Dictionary<string, string>

Kód:

 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;
        }

A kérdést 13/01/2020 23:52
a forrás felhasználó
Más nyelveken...                            


2 válasz

szavazat
0

Megpróbálod egy stringet egy szótárt objektumot. Ha szeretne egy gyűjtemény (mint szótár), akkor érdemes használni a bővítmény módszer például így:

    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);
        }

    }

Már kényszerítette, hogy „GetUser”, mint az itt megadott érték, de előfordulhat, hogy valóban szeretnénk valami mást. A szótárt használ kulcs-érték párokat, és akkor azt mondják eredménye [ „GetUser”], hogy visszatérjen a húr „GetUser”. Ön is használja TryGetValue igazolja, hogy GetUser ténylegesen rendelkezésre bocsátották.

Továbbá, ha csak azt, hogy visszatérjen a húr, ami után GetUser (pl felhasználónév), akkor meg tudná változtatni az eredményeket egy húr, és csak hozzá, hogy közvetlenül és hagyja az egész használata szótár, amely úgy tűnik túlzásnak a minta (talán az igazi projekt sokkal összetettebb bár).

Válaszolt 14/01/2020 00:17
a forrás felhasználó

szavazat
0

A máshol részben próbál hozzárendelése string szótár keresztül nyilatkozat results = Convert.ToString(arg);

Ezért kérjük, változtassa más része valami hasonló az alábbiak szerint:

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;
}
Válaszolt 14/01/2020 00:49
a forrás felhasználó

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