Datele si comportamentul unei clase sunt reprezentate de membrii acesteia. Exista o serie de tipuri de membri care pot fi folositi in definirea claselor:
Campuri
Campurile reprezinta valori de tip read/write sau read-only. Pot fi campuri de instanta (non-statice), reprezintand o stare a obiectului, sau campuri statice, reprezentand tipul obiectului.
Constante
O constanta reprezinta un tip a carei valoare nu se schimba. Consntantele au un tip, nume, valoare si sunt membri statici. Articolul Constante explica mai in amanunt ce sunt constantele, cand se folosesc si in ce categorii se clasifica.
Proprietati
Proprietatile sunt metode speciale ce permit schimbarea/interogarea valorii campurilor private printr-o sintaxa foarte simpla ce sporeste flexibilitatea. Proprietatile de instanta care au parametru se numesc indecsi.
Constructori de instanta
De fiecare data cand un obiect este creat, constructorul clasei este apelat. Acesta este o metoda speciala al carei principal scop este sa permita porgramatorului sa seteze valori implicite pentru campurile de instanta. Tot cu ajutorul acestei metode poate fi limitata instantierea clasei.
Constructori statici
Constructorii statici sunt metode speciale cu ajutorul carora se seteaza valorile implicitate pentru campurile statice sau in interiorul carora se poate logica ce trebuie executata o singura data.
Metode
Metodele reprezinta secvente de cod care schimba/interogheaza starea unui tip (metode statice) sau starea unui obiect (metode de instanta). Metodele sunt declarate in interiorul unei clase sau structuri prin specficicarea nivelului de acces, tipul return, nume si parametri.
Evenimente
Un eveniment reprezinta un mecanism care permite unui tip sa trimita o notificare catre metodele de instanta sau statice, dupa caz, ale lui sau ale altor tipuri.
Clasa care declanseaza (raises) evenimentul se numeste publisher, iar clasa care trateaza (handle) evenimentul se numeste subscriber.
Operatori
Prin supraincarcarea operatorilor se defineste modul prin care un obiect poate fi manipulat cand ii sunt aplicati anumit operatori. Prin operatorii de conversie se defineste modul de conversie (implicit sau explicit).
In definitia unui tip pot fi incluse alte tipuri (tipuri imbricate).
Un exemplu care sa includa toti membrii descrisi mai sus poate fi urmatorul:
class Car
{
//tip imbricat
class Engine
{
//
}
public static int P { get; set; }
//constanta
const int Number = 100;
//camp readonly
readonly string Name = "Car";
//camp static
static int _value = 2;
//proprietate
int Year { get { return 2012; } set { } }
//constructor de instanta
public Car()
{
//
}
//constructor static
static Car()
{
//
}
//metoda de instanta
public void Start()
{
//
}
//metoda statica
public static void Initialize()
{
//
}
//index
public Int32 this[String s] { get { return 0; }
set { }
//eveniment
event EventHandler Eveniment;
}
Membrii mosteniti nu fac parte din definitia unei clase.