PDA

View Full Version : [C#]Get e Set


Kleidemos
11-01-2003, 20:53
Chi mi spiega a cosa servono get() e set() magari con un esempio???????




Tnk

atragon
12-01-2003, 00:54
Attraverso get e set puoi lavorare in maniera comoda con i membri di una classe. Esempio:


class miaclasse
{
int x //definisco un intero che per default è private
public int X //questo è il costruttore
{
get // si occupa di restituire il valore di x
{
return x;
}

set // si occupa di settare il valore di x
{
x = value;
}
}
}



In pratica, se vuoi un esempio funzionante:


using System;
class valore
{
private int x;

public int X // proprietà
{
get
{
return x;
}
set
{
x = value;
}
}
}

class principale
{
public static void Main()
{
valore x1 = new valore();
x1.X = 5; // richiama la proprietà X definita nella classe usando la set
Console.WriteLine("Valore di x: " + x1.X); // qui viene usata la get
}
}


Tieni presente che non sei obbligato a definire entrambi set e get: se una classe ha al suo interno solo set potrai definire in essa un valore ma non leggerlo, viceversa se ha solo get. In quest'ultimo caso è, in pratica, read-only. Spero di essere stato chiaro, vista l'ora....

Kleidemos
12-01-2003, 09:12
Perche qui mi da errore?

// created on 12/01/2003 at 10.06
using System;
class valore {
private int i=10;
public int X {
get {
return i;
}

set {
X= value;
}
}
}

class Prov {
public static void Main(){
valore pr = new valore();
pr.X=10;
Console.WriteLine("Num è uguale a " + pr.X);
}
}





Tnk

Kleidemos
12-01-2003, 09:25
// created on 12/01/2003 at 10.06
using System;
class valore {
private int i=10;
public int X {
get {
return i;
}

set {
i= value;
}
}
}

class Prov {
public static void Main(){
valore pr = new valore();
pr.X=10;
Console.WriteLine("Num è uguale a " + pr.X);
}
}


Risolto!
Che figata!
Cioè anche se i è private posso modificarlo e leggerlo lo stesso...................vero?

atragon
12-01-2003, 11:05
Un membro definito private può essere acceduto solo all'interno della stessa classe, quindi finchè istanzi quella....

Kleidemos
12-01-2003, 11:09
Originally posted by "atragon"

Un membro definito private può essere acceduto solo all'interno della stessa classe, quindi finchè istanzi quella....

spiegati meglio........................... :(

Kleidemos
12-01-2003, 18:01
Originally posted by "Kleidemos"



spiegati meglio........................... :(

atragon
12-01-2003, 18:47
Hai 5 livelli di accessibilità per i membri di una classe: public (praticamente libero a tutti) protected, internal, protected internal e private. Quest'ultimo è il più stringente di tutti e consente l'accesso sollo all'interno della classe stessa.

Kleidemos
12-01-2003, 19:19
quindi finge il get-set è nella classe è permesso?

atragon
12-01-2003, 19:22
Se "finge" sta per "finchè" è corretto ;) ma nell'ambito della classe, come puoi capire, è possibile fare di tutto... vuoi approfondire facilmente il discorso? creando un membro definiscilo private, public ecc.... prova ad accedervi e vedrai che il compilatore si fa capire...

Kleidemos
12-01-2003, 19:24
Originally posted by "atragon"

Se "finge" sta per "finchè" è corretto ;) ma nell'ambito della classe, come puoi capire, è possibile fare di tutto... vuoi approfondire facilmente il discorso? creando un membro definiscilo private, public ecc.... prova ad accedervi e vedrai che il compilatore si fa capire...

si sta per funge, skusa!
Risponderesti al mio 2d sulla pila?