nntp2http.com
Posting
Suche
Optionen
Hilfe & Kontakt

C# static approfondimento

Von: f22 (f22@f22.it) [Profil]
Datum: 25.06.2008 10:22
Message-ID: <Wen8k.14997$Ca.14295@twister2.libero.it>
Newsgroup: it.comp.programmare
Ciao


PREMESSA

da qualche giorno sto' leggendo un libro sul C#, sono arrivato alla OOP,
ed ho letto fra le tante cose, che un metodo o un campo di classe puo'
dichiarato 'static', ed essere utilizzato senza istanziare un nuovo
oggetto per la classe, e che inoltre un metodo static non puo'
richiamare metodi non static o campi non static proprio perche' essi non
esistono fino alla creazione di un oggetto.

Inoltre un campo static mantiene in memoria il proprio valore e le
modifiche ad esso apportate non solo durante la vita del singolo oggetto
ma ad esso fanno riferimento tutti gli oggetti dello stesso tipo che
vengono successivamente creati.

quindi

class MiaClasse()
{
publis static int i = 0;

public MiaClasse()
{
this.i++;
}

}

MiaClasse oggetto1 = new MiaClasse();
consolle.write("oggetto1.i vale {0}",oggetto1.i); <-- vale 1
MiaClasse oggetto2 = new MiaClasse();
consolle.write("oggetto1.i vale {0}",oggetto1.i); <-- vale 2

DOMANDA

1 -perche' apporre static al metodo Main()?

Forse perche' va reso disponibile senza appunto istanziare nessun oggetto?

2- nel libro in diversi esempi l'autore utilizza l'applicazione
consolle, e per tutti i metodi utilizza sempre la parola chiave
'static', esempio


#region Using directives

using System;
using System.Collections.Generic;
using System.Text;

#endregion

namespace Classes
{
class Program
{
static void Entrance()
{
//qui' si riferisce ad una classe
//dichiarata in un file separato

Point origin = new Point();
Point bottomRight = new Point(1024, 1280);
double distance = origin.DistanceTo(bottomRight);
Console.WriteLine("Distance is {0}", distance);
Console.WriteLine("No of Point objects: {0}",
Point.ObjectCount());
}

static void Main(string[] args)
{
try
{
//chiama il metodo statico entrance
//e racchiude tutto in un blocco try

Entrance();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
}



grazie per l'attenzione !



[ Auf dieses Posting antworten ]