Perché usare string [] args in tutti i metodi principali?

2

Sono un principiante nell'apprendimento della programmazione. Chiedo di usare l'array di stringhe nel metodo principale come parametro. Perché non scrivere il metodo Main () senza l'array di stringhe? Qual è il punto di avere questo array nel metodo Main?

Ad esempio:

public static void Main(string[] args) 
{
Console.WriteLine(args.Length);
Console.WriteLine(args[1]);
}
    
posta Makeed 08.12.2014 - 23:31
fonte

3 risposte

19

Le applicazioni della console precedono le applicazioni GUI e prendono i parametri della riga di comando per un tempo molto lungo (almeno dal tempo di CP / M, che precede MS-DOS, che precede Windows, che precede Windows NT, conservando più o meno il stessa logica).

Puoi anche passare i parametri della riga di comando alle app della GUI di Windows.

Questi sono args .

    
risposta data 08.12.2014 - 23:35
fonte
7

Questa è non la sola provincia di "vecchie" applicazioni (da riga di comando). Ogni programma in esecuzione ha una "riga di comando" che punta all'immagine eseguibile e include tutti i parametri della riga di comando. Molte app della GUI accettano argomenti che modificano il comportamento di inizializzazione o il comportamento di runtime o entrambi.

La maggior parte delle lingue consente di specificare una funzione del punto di ingresso che non richiede argomenti. Ma praticamente tutti loro ti permettono anche di passare argomenti. Questa matrice args è semplicemente una raccolta ordinata di tutto ciò che viene passato sulla riga di comando dopo il nome del file eseguibile quando viene eseguito il programma. EDIT: E ovviamente nel caso del linguaggio C (come un esempio), il primo argomento (indice 0) è in realtà il nome del programma.

Ad esempio, immagina un piccolo programma inutile che visualizza un messaggio in una finestra di messaggio e ti consente di specificare il messaggio e il titolo per la finestra sulla riga di comando, in questo modo:

myprogram.exe -title Foo -message Bar

Il tuo array di argomenti in questo caso sarà simile a questo, presumendo una lingua come C # che non include il nome del programma nella matrice args :

args[ 0 ] = "-title"
args[ 1 ] = "Foo"
args[ 2 ] = "-message"
args[ 3 ] = "Bar"

Dare un senso all'ordine degli argomenti, e quali sono validi o meno, dipende totalmente dal tuo codice applicativo.

    
risposta data 09.12.2014 - 07:07
fonte
0

Hai mai elencato elementi in una directory usando

ls -a ~/Downloads

o

dir C:\Users\user1\Downloads\ /P

Ora quelle "ls" e "dir" sono comandi / programmi e gli ultimi argomenti vengono passati ai programmi come string[] argv o talvolta int argc, char** argv . Forniscono argomenti ai programmi in modo che possano comportarsi di conseguenza.

Quando avvii un programma, il sistema operativo carica il programma nella memoria e invia gli argomenti allo stack. Ora sono disponibili per il programma da utilizzare.

I linguaggi di alto livello offrono un modo semplice per accedere a tali argomenti sullo stack (come matrici di stringhe o array di puntatori a stringhe terminate null). Se hai usato l'assembly, dovresti eseguire un po 'di aritmetica dei puntatori e caricare gli argomenti dallo stack ai registri quando ne avevi bisogno.

Per maggiori dettagli controlla il seguente link, buona spiegazione: Riga di comando di FreeBSD argomenti

    
risposta data 11.12.2014 - 16:26
fonte

Leggi altre domande sui tag