I miei primi passi con C#

lunedì 19 giugno 2006 - 11.16

AndyC# Profilo | Newbie

Salve ragazzi, questa mattina mi sono andato a comprare un manuale di C# perchè ho molta voglia di impararlo e dispongo già di Microsoft Visual Sudio .NET.
Diciamoche programmo già da diverso tempo in php quindi, conosco discretamente la sintassi delle strutture di controllo, gli array, gli opertori logici, aritmetici, di confronto e qualche funzione.
Leggendo l'indtroduzione del C# non è che ci abbia capito molto e gradirei se qualcuno esperto in materia (so che ce ne sono parecchi) mi potrebbe spiegare i parole semplici e comprensibili alcune cose che non ho capito:

1. La suddivisione dei dati in tre gruppi: i tipi valore, i tipi riferimento e i tipi puntatore.
2. Cosa sono le Aree o i Blocchi di memoria
3. Non ho compreso parecchi aspetti di questo semplice script:

using System; public class HelloWord { static void Main( string [] args ) { Console.WriteLine("Hello World!"); } }
Riga 1: //a cosa serve?
Riga 3: // public a cosa serve? Class fa la stessacosa di function?
Riga 4: // qui non ci ho capito nulla
Riga 5: //qui ho capito tutto, Console.WriteLine serve per stampare a video una scritta, giusto?

Grazie a tutti

Ciciu Profilo | Senior Member

Ciao.
Diciamo che, per rispondere alle Tue domande, bisognerebbe quasi scrivere un libro...
cerco di rispodnerTi per quello che so :

1) Tutto ciò che è dichiarato come STRUCT, risiede nello stack, quindi viene indirizzato per valore. Tutto ciò che è dichiarato come CLASS, risiede, una volta istanziato, nell'HEAP, e quindi deve essere indirizzato per referenza, utilizzando delle variabili puntatore.

2) Non so a cosa Ti riferisci... Se intendi i blocchi di codice, sono gruppi di istruzioni racchiusi tra {}. Altrimenti, spiegati meglio...

3) Quello che Tu ha postato è il tipico script "Hello World" della console application.

>using System;
>
>public class HelloWord {
> static void Main( string [] args ) {
> Console.WriteLine("Hello World!");
> }
>}
>
>Riga 1: //a cosa serve?
Questa riga dice al compilatore di provare System come prefisso di tutto ciò che trova nel sorgente. Console è una classe deifnita nel namespace System, e WriteLine è uno dei suoi metodi che, giustamente, serve a "scrivere a video" la stringa che le passi come parametro. Se Tu non avessi incluso "using System", avresTi dovuto scrivere System.Console.Writeline("Hello World") per esteso...
>Riga 3: // public a cosa serve? Class fa la stessacosa di function?
Questa riga definisce una classe a visibilità pubblica denominata HelloWorld. In c# TUTTO è una classe... all'interno della classe potrai inserire dei metodi, che fanno il mestiere delle function...
>Riga 4: // qui non ci ho capito nulla
All'interno della classe HelloWorld stai dichiarando un metodo statico, che ritorna un valore void (quindi non ritorna nulla), che si chiama Main. Main è un nome riservato : definisce l'entry point della Tua applicazione e, ovviamente, ce ne può essere uno solo... static, significa che questo metodo può essere richiamato senza dover prima istanziare la classe (con la parola chiave new). Del resto, essendo l'entry point di un'applicazione, non avresTi modo di istanziarlo... Il parametro "string[] args" rappresenta un array di parametri. In pratica args contiene tutti i parametri della linea di comando con cui lanci la Tua applicazione. E' il modo "standard" per il passaggio di parametri opzionali (l'array indefinito, per il passaggio di parametri, deve sempre essere l'ultimo parametro di una procedura).
>Riga 5: //qui ho capito tutto, Console.WriteLine serve per stampare
>a video una scritta, giusto?
Si !

Bah, effettivamente ci sarebbe da scrivere un libro... Scusa se sono stato piuttosto breve, ma il tempo a disposizione è sempre (troppo) poco...
Se hai bisogno, scrivi... Se posso consigliarTi, cerca di scrivere posts "più brevi", magari con domande mirate...

Ciao - FabioG
Fabio G

AndyC# Profilo | Newbie

>>Riga 4: // qui non ci ho capito nulla
>All'interno della classe HelloWorld stai dichiarando un metodo
>statico, che ritorna un valore void (quindi non ritorna nulla),
>che si chiama Main. Main è un nome riservato : definisce l'entry
>point della Tua applicazione e, ovviamente, ce ne può essere
>uno solo... static, significa che questo metodo può essere richiamato
>senza dover prima istanziare la classe (con la parola chiave
>new). Del resto, essendo l'entry point di un'applicazione, non
>avresTi modo di istanziarlo... Il parametro "string[] args" rappresenta
>un array di parametri. In pratica args contiene tutti i parametri
>della linea di comando con cui lanci la Tua applicazione. E'
>il modo "standard" per il passaggio di parametri opzionali (l'array
>indefinito, per il passaggio di parametri, deve sempre essere
>l'ultimo parametro di una procedura).

Ciao, la parte che non ho compreso molto è questa.
Cosa significa dichiarare un metodo statico che ritorna un valore void?
A cosa serve Void() in generale?
"string[] args" nel mio caso quali parametri contiene?

E visto che ci sono, sperando di non andare Off Topic vorrei chiederti un aiuto:
Ho aperto Microsoft Visual Studio .NET Version 7.0, ho cliccato su nuovo progetto, successivamente su applicazione Windows e non mi riesce ad aprire il File Form1.cs, dandomi il seguente errore:
"Errore durante il caricamento del documento. Correggere l'errore e provare nuovamente a caricare il documento. Messaggio di errore:
Impossibile trovare il file o l'assembly di nome EnvDTE oppure una delle sue dipendenze."
Ancora non sono riuscito a trovare la natura di questo errore, sarà dovuto dall'installazione non andata a buon fine?

Grazie mille

Ciciu Profilo | Senior Member

>A cosa serve Void() in generale?
void server per assegnare un ritorno "nullo" ad un metodo. Quando un metodo non deve ritornare nulla, allora ritorna un void. In pratica ogni metodo DEVE ritornare qualcosa... Ma se di quel qualcosa non Te ne frega niente, allora ritorna un void...


>"string[] args" nel mio caso quali parametri contiene?
Immagina di compilare la Tua applicazione e di lanciare il Tuo eseguibile da linea di comando (del resto, la Tua è una console application, per cui più che da linea di comando non puoi lanciarla !). Come per tanti altri comandi, interni ed esterni, puoi specificare una serie di parametri. Esempio :

c:\>dir *.txt /s /p

Questo comando visualizza tutti i files con estensione txt presenti in tutte le directory figlie della corrente (compresa la corrente), "paginando" l'output.

Nell'array ARGS, avresti, spacchettati, tutti questi parametri... Mi sembra, ma non ci metto la mano sulfuoco, che l'indice 0 dell'array contenga il nome dell'eseguibile...

L'errore di cui parli, invece, credo sia dovuto a qualcosa che è andato storto nell'installazione, ma non saprei aiutarTi più di tanto... Il solo consiglio che posso darTi, che funziona quasi sempre, è... reinstalla !

Ciao - FabioG

Fabio G

AndyC# Profilo | Newbie

Ciao, per quanto riguarda Visual Studio l'ho reinstallato, ma niente da fare, mi da sempre lo stesso problema.
Per caso sai dove potrei trovare qualche Service Pack per la versione 7.0?

Grazie ciao

Ciciu Profilo | Senior Member

Beh, se ce ne sono.... sul sito di Microsoft !
Ciao !
Fabio G
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5