/ / L'indice era fuori dai limiti dell'array - c #

L'indice era fuori dai limiti dell'array - c #

Questo è il mio programma con errore:

L'indice era fuori dai limiti dell'array

codice:

using System;
using System.Collections.Generic;

using System.Text;

namespace command
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("First Name is " + args[0]);
Console.WriteLine("Last Name is " + args[1]);
Console.ReadLine();
}
}
}

risposte:

1 per risposta № 1

Il problema è che non ne passi nessunoparametri per il tuo programma. È possibile farlo eseguendo il programma dalla riga di comando oppure, se lo si esegue tramite Visual Studio, è possibile impostare gli argomenti da passare andando alle proprietà del progetto, selezionando la scheda Debug e inserendoli nella sezione Opzioni di avvio .

Proprietà del progetto Visual Studio


0 per risposta № 2

Questo si basa sull'idea che stai passando aminimo di due argomenti, ma non lo stai verificando per primo. Se non si desidera un output a meno che l'utente non abbia incontrato un minimo di due argomenti, utilizzare un blocco try {} e acquisire un array fuori limite con una risposta all'utente per utilizzare un minimo di due argomenti.

   static void Main(string[] args) {
try{
Console.WriteLine("First Name is " + args[0]);

Console.WriteLine("Last Name is " + args[1]);

Console.ReadLine();
}catch (OutOfBoundsException exception){
MessageBox.Show("Insufficient input parameters");
}

Puoi anche usare un if (args.Length == 2) per determinare se questo è sufficiente senza usare un tentativo {}.


0 per risposta № 3

Devi controllare quanti parametri della riga di comando sono effettivamente fornito:

using System;
using System.Collections.Generic;

using System.Text;

namespace command
{
class Program
{
static void Main(string[] args) {
if (args.Length > 0)
Console.WriteLine("First Name is " + args[0]);

if (args.Length > 1)
Console.WriteLine("Last Name is " + args[1]);

Console.ReadLine();
}
}
}

per esempio.

  # No parameters
c:MyProgram.exe

# One parameter
c:MyProgram.exe FirstNameOnly

# Two parameters
c:MyProgram.exe FirstName LastName

0 per risposta № 4

È sempre necessario verificare la dimensione dell'array args. COSÌ...

static void Main(string[] args)
{
if ( args.Count() >= 2 )
{
Console.WriteLine("First Name is " + args[0]);
Console.WriteLine("Last Name is " + args[1]);
Console.ReadLine();
}
}

0 per risposta № 5

Prova questo:

static void Main(string[] args)
{
if(args.Length > 0)
{
Console.WriteLine("First Name is " + args[0]);
Console.WriteLine("Last Name is " + args[1]);
}
else
Console.WriteLine("No Command Line Arguments were passed");

Console.ReadLine();
}

e passa gli argomenti della riga di comando come spiegato da David_001.