CSharp – Properties – get-set
Properties allow you to control the accessibility of a classes variables.
A property consists of 2 parts, a get and a set method, wrapped inside the property.
Only one method is required, this allows you to define read-only and write-only properties.
Syntax:
...
// la proprietà è la stringa Color
public string Color
{
// get restituisce il valore di una variabile
get { return color; }
// set assegna a color il valore - keyword value - proveniente dall'esterno
set { color = value; }
}
...
Example:
// definisco la proprietà Color come pubblica e di tipo stringa
public string Color
{
get
{
return color.ToUpper(); // converte una stringa in caratteri maiuscoli
}
set
{
if(value == "Red")
color = value; // keyword value assegna il valore proveniente dall'esterno a color
else
Console.WriteLine("This car can only be red!");
}
}
For italian people: come funziona?
1. if(value == “Red”) -> se la variabile è uguale a ‘Red’ -> set -> color = Red
2. get -> ritorna ‘RED’
Example:
class TimePeriod
{
private double seconds;
// proprietà - double Hours -
public double Hours
{
get { return seconds / 3600; }
set { seconds = value * 3600; }
}
}
class Program
{
static void Main()
{
TimePeriod t = new TimePeriod();
// Assigning the Hours property causes the 'set' accessor to be called.
t.Hours = 24;
// Evaluating the Hours property causes the 'get' accessor to be called.
System.Console.WriteLine("Time in hours: " + t.Hours);
}
}
// Output: Time in hours: 24
For italian people: come funziona?
1. si avvia Main()
2. dichiato ‘t’ come variabile di tipo TimePeriod, la sintassi è la stessa che uso per richiamare una funzione
3. t.Hours = 24; -> assegnare un valore a ‘Hours’ causa l’avvio di ‘set’ che memorizza i dati in secondi
4. restituisce ‘get’ -> restituisce i dati in ore
5. System.Console.WriteLine(“Time in hours: ” + t.Hours); -> t.Hours è quello restituito da get
Example:
// Declare a Code property of type string:
public string Code
{
get
{
return code;
}
set
{
code = value;
}
}
// Declare a Name property of type string:
public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
// Declare a Age property of type int:
public int Age
{
get
{
return age;
}
set
{
age = value;
}
}
Working Example:
using System;
namespace tutorialspoint
{
class Student
{
private string code = "N.A";
private string name = "not known";
private int age = 0;
// Declare a Code property of type string:
public string Code
{
get
{
return code;
}
set
{
code = value;
}
}
// Declare a Name property of type string:
public string Name
{
get
{
return name;
}
set
{
name = value;
}
}
// Declare a Age property of type int:
public int Age
{
get
{
return age;
}
set
{
age = value;
}
}
public override string ToString()
{
return "Code = " + Code +", Name = " + Name + ", Age = " + Age;
}
}
class ExampleDemo
{
public static void Main()
{
// Create a new Student object:
Student s = new Student();
// Setting code, name and the age of the student
s.Code = "001";
s.Name = "Zara";
s.Age = 9;
Console.WriteLine("Student Info: {0}", s);
//let us increase age
s.Age += 1;
Console.WriteLine("Student Info: {0}", s);
Console.ReadKey();
}
}
}
The result is:
Student Info: Code = 001, Name = Zara, Age = 9
Student Info: Code = 001, Name = Zara, Age = 10
For italian people: come funziona?
1. si avvia per prima Main()
2. Student s = new Student(); -> dichiaro l’oggetto s di tipo Student()
3. s.Code = “001”; -> avvia ‘class Studen’t> proprietà ‘Code’> set> code=001
4. get -> ritorna il valore code=001, quindi al di fuori di ‘class Student’ la proprietà Code=001
Ref: http://www.tutorialspoint.com/csharp/csharp_properties.htm