0

コマンドプロンプトから実行したいツールがあります。

コードは次のとおりです

    static void Main(string[] args)
    {

        string User;            
        if (args[0].Length  != 0)
        {
             User = args[0];
        }
        else
        {
        Console.Write("Please Enter the Username");
        User = Console.ReadLine();
        }

コマンドプロンプトで「tool.exe」の後にユーザー名または最初の引数を指定しなかった場合、「インデックスが配列の境界外でした」のような例外がスローされます

引数を与えなかった場合、出力が必要です-ユーザー名を指定するように求められます。私を助けてください。

4

7 に答える 7

3

argsは配列であり、長さをチェックする必要があります。チェックするargs[0].Lengthときは、実際には配列に少なくとも1つの要素があると想定しているためLength、最初の項目をチェックしています。

試す

if (args.Length != 0)

代わりに、コマンドラインパラメータの配列の長さをチェックします。

于 2012-09-18T10:48:59.687 に答える
2

Lengthあなたはそのアイテムを呼びたくない。

            \/ Change here
     if (args.Length  != 0)
    {
         User = args[0];
    }
    else
    {
    Console.Write("Please Enter the Username");
    User = Console.ReadLine();
    }
于 2012-09-18T10:48:33.157 に答える
1

ifを次のように変更する必要があります。

static void Main(string[] args)
{

    string User;            
    if (args.Length  != 0) // Change from args[0] to args
    {
         User = args[0];
    }
    else
    {
    Console.Write("Please Enter the Username");
    User = Console.ReadLine();
    }
}

この呼び出しの後、使用する前に必ず実行してください string.IsNullOrEmpty(User)

于 2012-09-18T10:49:27.633 に答える
1

これを行う

static void Main(string[] args)
{

string User;            
if (args.Length > 0)
{
     User = args[0];
}
else
{
Console.Write("Please Enter the Username");
User = Console.ReadLine();
}
}
于 2012-09-18T10:50:47.067 に答える
0

このようにすることで、コレクション string[] の最初の要素を見ています。

if (args[0].Length  != 0)

引数がない場合、これは例外になります。引数があるかどうかを確認する場合の正しいステートメントは次のとおりです。

if (args.Length  != 0)
//Or this
if (args.Any())

Any() が名前空間 System.Linq の一部であることを確認します。

于 2012-09-18T10:59:07.917 に答える
0

引数配列の長さ、つまり引数の数を確認する必要があります。現在、args[0] のサイズを確認しています。

if (args.Length  != 0)
{
  // command have some params
}
else
{
 // command have no params
}
于 2012-09-18T10:50:31.747 に答える
0

次の行を置き換えるだけです。

if (args[0].Length != 0)

次のコードを使用します。

if(arg.Length !=0) <br>

コードでは、args 配列で項目 0 を参照し、その長さを確認しています。
配列の長さを確認したいので、配列自体の Length プロパティを使用します。

于 2012-09-18T10:54:37.800 に答える