C# static approfondimento
[ Nouvelle discussion
| Répondre au groupe
|
it.comp.programmare ]
Sujet: C# static approfondimento
De: ...@f22.it (f22)
Groupes: it.comp.programmare
Organisation: [Infostrada]
Date: 25. Jun 2008, 08:22:14
|
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 !

|
 cette fonctionnalité est reservée aux membres ayant une session active !
|