Sunteți pe pagina 1din 51

1.

C#
OpenBooklet
padre_cosmin

Introducere

C#esteunlimbajdeprogramarecompletorientatobiectcreatdeMicrosoft
lasfritulanilor1990pentruafiunconcurentlaadresaJava.Facepartedin
infrastructura.netframeworkiseaseamnntrooarecaremsurcuJavaaa
ctrecereadelaunlimbajlacellaltartrebuisfiedestuldeuoar.
nianuarie1999,AndersHejlsbergaformatoechippentruacreaunnou
limbajdeprogramaredenumitdeeiCoolClikeObjectOrientatedLanguage.
Lalansareasa,MicrosoftiaschimbatnumelenC#iaportatlibrriilede
claseirutineleASP.NET.
C#,lafelcaiJava,esteunlimbajinterpretatcticompilat.
>Fiierelesurssesalveazcuextensia.cs(Sursa.cs)
>nurmacompilriirezultunprogramcuextensia.exesau.dll(codCIL
CommonIntermediateLanguage)daracestanupoatefiexecutatfraavea
instalatnetFramework.
.NETconinedouentitiimportante:
CommonLanguageRuntime(CLR)>mediuldeexecuieal
programelor.Estemodululcareseocupcumanagementuliexecuiacodului
scrisnlimbajelespecifice.NET.Oferdeasemeneaserviciiprecumsecuritatea
aplicatiilor,portabilitateaacestora,managementulmemoriei(C#aregarbage
colectorincorporataacanutrebuiesnepreocupeeliberareamemoriei)i
tratareaexcepiilor.Lapornireaunuiprogram,CLRactiveazuncompilator
specialnumitJIT(justintime)carepreiacodulCILiltransformncod
executabilpentrumainapecareruleazdinaceastcauzC#esteunlimbaj
independentdemainsausistemdeoperareprogramelescrisenelvorrula
peoricemainpecareesteinstalatNetFramework
BaseClassLibrary>estebibliotecadeclase.NETiconineovast
coleciedebiblioteciprecompilatencapsulatedeobiceinmetodecarela
rndulloraparinclaseloriarclaselesuntorganizateiseparatentreelecu
ajutorulspaiilordenume(namespace).Acestebiblioteciconincodpentru
interconectarecubazededate,comunicareanretea,dezvoltareaaplicaiilor
web,accesareadateloretc.
C#seregseten:
>VisualStudio.NET
>VisualStudioExpress2008(variantafree)
>.NETFrameworkSDK

.NetFrameworkSDKconine:
.NetFramework
CompilatoarenliniedecomandpentruC#(csc),C++,VisualBasic(vbc),
Jscript
instrumentepentrucrearea,depanareaiconfigurareaaplicatiilor.NET
exempleidocumentaie
nmaterialulurmtorvomrealizacompilrinliniedecomand,adicvom
deschideterminalulsaucommandpromptulwindowsuluiivomcompilacu
C:...\...>cscProgram.cscscestecompilatorulCsharpcompiler
Pentruaputeacompilaastfelcaleactrecompilatorulcsctrebuiecunoscutde
sistemuldeoperare,trebuiesseaflenvariabilaPATH.VariabiladesistemPATH
coninecictreaplicaiiimportantedespriteprincaracterul;
DacaminstalatVisualStudiosauVCSEsarputeacalainstalare,acesteasnu
modificePATHastfelnctsadaugecalectrecscncadrulei,astfelcvatrebuisa
rulmfiierulVSVARS32.batdin...\director_install\Common7\Tools
>VSVARS32
ProgramelenetFrameworksepotrulaipedistribuiiledeLinux.
InstalareanetFrameworkpeUbuntu:
$wgethttp://kegel.com/wine/winetricks
$shwinetrickscorefontsdotnet20
InstalareacompilatoruluideC#:
http://www.monoproject.com/CSharp_Compiler
ExistunechivalentalVisualStudio.Net,senumeteMonoDevelop,esteprodusde
proiectulMonoisepoateinstalautilizndUbuntuSoftwareCenter.
CompilatoarepentruC#:
mcs:compilertotarget1.1runtime(tobedeprecatedwithMono2.8).
gmcs:compilertotargetthe2.0runtime.
smcs:compilertotargetthe2.1runtime,tobuildMoonlightapplications.
dmcs:StartingwithMono2.6thiscommandistheC#4.0compiler,andreferences
the4.0runtime.
Vomfolosigmcs
$sudoaptgetinstallmonogmcs

PrimulProgram

1.1
p1.cs

File|View|Tools|Help
usingSystem;
classPrimulProgram
{
staticvoidMain(string[]args)
{
Console.WriteLine("SalutPlaneta!");
Console.ReadLine(); }
}
$gmcsp1.cs
FiindpeUbuntuvoifolosigmcspentruacompila.nurmacompilriirezult
executabilulp1.exe.p1.exenupoatefiexecutatdectdacmainaareinstalat
netframework,pecarelaminstalatmaiinaintepeWineprincomenziledepepagina
anterioar.
OBServaii:
1. Fiierulsursnutrebuiesaibneapratnumeleclaseiprincipale,nexemplul
meu,clasasenumetePrimulProgramiarfiierulcareoconinesenumetep1.cs
2. Oriceaplicaietrebuiesconinoclasprincipal,lafelcapeJava,cares
coninmetodaMain()careconinecodulcucarencepeexecuiaprogramului.Main()
trebuiesfiedetipulstaticvoid.
3. usingSystemspuneimplementriiC#prinintermediuldirectiveiusing,cse
vorutilizaclaseaflatenspaiuldenumeSystem.Spaiiledenumesuntnite
containerencaresedefinescnumedeclasepentruevitareaconflictelordenumei
pentrusepararealogic.SpaiuldenumeSystemesteunulfundamentalidefinetei
calsaConsolecareinglobeazmetodeleWriteLine()iReadLine().
4. Apeluluneifunciiseface:Namespace.NumeClas.NumeMetod(parametri)
5. C#esteunlimbajcompletorientatobiect,NUpotexistadefiniiidefunciin
afarauneiclase.
6. C#esteCaseSensitiveaveigrijlaminusculeimajuscule.
7. Arenumai80decuvintecheiei12tipuridedateincorporate.
8. Suportprogramareageneric,deexemplulsepoatecreaofunciecaresorteaz
unirdecaracteredarnudepindedetipulelementelorirului.
9. Comentariileserealizeazcu
//acestaesteuncomentariupeunsingurrnd
/*acestaesteuncomentariu
pemaimulternduri*/

File|View|Help
namespaceSpatiulMeu
{
classTest
{
staticvoidMain(string[]args)
{
inta; //amdeclaratovariabilalocalaa
a=20; //amatribuitvariabileiavaloarea20
doubleb=10;
strings="variabiladetipstring";

}
}

System.Console.WriteLine("a="+a);
System.Console.WriteLine("b="+b);
System.Console.WriteLine("s:"+s);

$gmcsp1.cs
MetodaMain
Estepunctuldeintrare,lalansareanexecuieaprogramului,mediuldeexecuie
.Net(CLR)cautiapeleazmetodaMain,unprogrampoateconinemaimulteclase
darnumaiunatrebuiesconinclasaMain.
Tipuriabstracte
Programuldeclaruntip,clasaTestiunmembrualclasei,metodaMain.
Spaiidenumedefinitedeutilizator
Existspaiidenumepredefinite,celecarefacpartedinBibliotecadeClase.Net.
C#permiteprogramatorilorsicreezepropriilespatiidenumepentruorganizarea
logicaaplicaiilormariprinnamespaceSpatiulMeu.Prezenaluiesteopionali
attclasacareconinemetodaMain()cticelalalteclasealeprogramuluipotsfie
inclusesaununinteriorulunuinamespace.
nprimulexemplu,celdepepaginaanterioar,metodaWriteLine()afostapelat
prinConsole.WriteLine()darnaintedeascriecodulclaseisaintrodusnamespaceul
SystemusingSystem.nexempluldemaisus,celdepepaginaaceasta,nuammai
introdusnamespaceulSystemdaramapelatmetodaWriteLinesubforma
NameSpace.Console.WriteLine(...).
Directivausingfacevizibilenprogramtoatenumeledeclasedintrunspaiude
nume.Spatiiledenumesuntcontainerelogicecareservesclaseparareanumelorde
tipurintrobibliotecdeclasesauntrunprogram.

Exemplu:
usingSystem;toatenumeledefinitenspaiuldenumeSystemdevin
accesibile
usingSystem.Widnows.Forms;claseledinspaiuldenumeFormsdevin
vizibilenprogram.Systemconinemaimulteclaseprintrecareseaflispaiulde
numeWindows.SpaiuldenumeWindowsconinelarndulluispaiuldenume
Forms.
Operatorul.servetelaseparareaspaiilordenume,sepornetedelaspaiulde
numeexteriorisecontinupnseajungelametodadorit.
//Primulprogramutilizeazdirectivausing
usingSystem;
classTest
{
staticvoidMain()
{ Console.WriteLine(''C#''); }
}
//Aldoileaprogramprecizeazcaleacomplet
classTest
{
staticvoidMain()
{ System.Console.WriteLine(''C#''); }
}
!!!DacfolosimdoarusingSystemiarnoiavemnevoiedeoclasdin
System.Windows,acesteanuvorfiincluse,trebuiefolositiusingSystem.Windows.
ModuridedefinireametodeiMain:
staticvoidMain(string[]args){...}
staticintMain(){string[]args}{...;returncal_int;}
staticvoidMain(){...}
staticintMain(){}{...;returncal_int;}
argssuntparametriicarepotdidainliniedecomand
MetodaMaintrebuiescrisacuMmajusculitrebuiesfiestatic,adicse
iniializeazosingurdat,C#estecasesensitive
MetodaMainpoatefidefinitcaprivatsaupublic,implictestedefinit
privatastfelcaalteaplicaiisnuopoataccesa
publicstaticvoidMain(){...}
privatestaticvoidMain(){...}

1.2




Parametriinliniedecomand

usingSystem;
classProgram
{
staticvoidMain(string[]args)
{
Console.Write("Nr.parametri="+args.Length+'\n');
for(inti=0;i<args.Length;i++)
Console.Write(args[i]+Environment.NewLine);
//liniaprecendentamaipoatefiscrisaca:
//Console.WriteLine("{0}!",args[i]);
}
}

Programuluip1.exeisetransmit3parametrinliniedecomand:Ana,are,meresi
pere.meresipereconstituieunsingurparametru.
Argsedefinitcaunvectordeiruridecaractere,string[]args.Args.Length
returneaznumruldeelementealvectorului.
Environment.NewLinereprezintuncaracterlinienoulafelcai'\n'
Con
1.3
Scriereaicitireadinliniadecomand
WriteLineiReadLinesegsescnSystem.Console.
Potfifolositeca:
1) introducereadoaranamespaceuluiSystem
usingSystem
Console.WriteLine(mesaj1+mesaj2+...);
Console.ReadLine(variabila);
2) sau,frincludereanamespaceurilor
System.Console.WriteLine(mesaj1+mesaj2+...);
System.Console.WriteLine(variabila);

Scriereanconsolserealizeazcu:
Console.Write(...);
//scriefratrecelalinienou
ConsoleWriteLine();
//scrieitrecelalinienou
Citireadinconsol:
stringsir=Console.Read();
stringsir=Console.ReadLine();
Exemplediversedescrieriicitiridelaconsol:
1) citireaunuiirdecaractereiafiareasa:
stringnume=Console.ReadLine();
Console.Write(''Salut,{0}!'',nume);
2)citireainteractivdelaconsol
usingSystem;
classProgram
{
staticvoidMain(string[]args)
{
Console.Write("Whatisyourname?:");
Console.Write("Hello,{0}!",Console.ReadLine());
Console.WriteLine("WelcometotheC#StationTutorial!");
}
}

3) ConcatenareamesajelorscrisecuWriteLinecu+:
Console.WriteLine(mesaj1+mesaj2);
4) \ri\n
Console.WriteLine("Primalinie\n");
Console.WriteLine("Adoualinie\r");
Console.WriteLine("Atreialinie");
5) Afiareaunuiirdecaracterencareinserm
diversevaloridevariabile:
Console.WriteLine(''a={0},b={1},c={2}'',a,b,c);//nlocullui{0}seva
punevaloarealuia,nlocullui{1}sevapunevaloarealuib,nlocullui{2}seva
punevaloarealuic
Adugirilegatedescriereaicitireadinconsol:
1) Environment.NewLinecaracterlinienou,semaipoatefolosi'\n'
2) Caractereescape:\n(linienou),\r(carriagereturn),\r\ncarriagereturnnew
line,\''(caractereghilimele),\\(caracterslash),\t(tab)

Tipuridevariabile

C#esteunlimbajdeprogramareputernictipizat,trebuiedefinitfiecare
obiectcreat.Tipurilesuntnsclaseavndcabazclasaobject.Utilizatorul
poatenssidefineascpropriiletipuriprinclase.
Fiecruitipicorespundeoclas,tipuluiinticorespundeSystem.Int32,
listavafiprezentatmaijos:
Tip
Dim. Tip.Net Descriuere
bytes System.
object

var

Object

Tipuldebazaltuturortipurilor

string

va

String

Tipirdecaractere

byte

Byte

ntregfrsemn[0,255]

char

Char

Caracter,retinecaractereUnicode

bool

Boolean Valoritruesaufalse

sbyte

SByte

ntregcusemn[128,127]

short

int16

ntregcusemn[32768,32767]

ushort

UInt16

ntregfrsemn[0,65535]

int

Int32

ntregcusemn[2147483648,2147483648]

uint

Uint32

ntregfrsemn[0,4294967295]

float

Single

Realcuvg.mobil,simplprecizie
[+/1,5x1045,+/3,4x1038]7cifresemnifica.

double 8

Double

Realcuvg.Mobil,dublprecizie
[+/5,0x10324,+/1,8x10308]15cifresemnific.

decimal 12

Decimal Tipzecimalcuvg.Fix.28cifresemnificative

long

Int64

Tipntregcusemn.[263,2631]

ulong

UInt64

ntregfrsemn.[0,264]

Timpulobject
Esterdcinantregiiierarhiidetipuriiclasadebazatuturorclaselor
definiten.NETFramework.Toateclaseledin.NetFrameworkmostenescclasa
object.

Variabileledetipclassenumescobiectesauinstanealeclasei.
Creareaunuiobiectdetipclas,senumeteinstaniere
Tipulstring
TipulstringreineunsirdecaracteredinsetulUnicodepe16biti.
stringsir=''Anaaremere.'';
Exemplededeclaraiidedate:
objecto1=null;
stringsir=''SalutPlaneta!''
sbyteb=6;
longp=3,q=8L;
ulongx=2UL,y=5L,z=10U,w=8;
floatf1=4.5,f2=3.8F;
doubled1=1.3,d2=0.2D;
charc='E';
decimald=12.4M;//Mdesemneazoconstantdecimal
2.1
Tipulreferin

TipurilevaloaresunttipurilepredefinitedeC#(char,int,short...)cu
excepiatipurilorstringiobject.
Tipurilereferinsedefinescdectreprogramator,aicisencadreaz
tipurileinterfa,delecatitipurilearray(tablouri).Acesteasuntalocate
dinamicnHeap.
structStructura{...}//tipvaloare
classClasa{...}//tipreferinta
classProgram
{
staticvoidMain(string[]arg)
{
inta=7;
//variabilalocala
StructuraObjStrc=newStructura();//ObjStrcvariabillocal
ClasaObjCls;//referinaObjClssememoreazpeStiv
ObjCls=newClasa();//alocnHeapunobiectrefrintdeObjCls
}
}
Datelevariabilelordetipvaloaresememoreazpestiv(Stack).

2.2
Tipuricreatedeutilizator

2.2.1 Structurile
usingSystem;
structStructura
{
publicinta;
privateintb;
publicvoidSetB(intval){b=val;}
publicintGetB(){returnb;}
}
classProgram
{ staticvoidMain(string[]args)
{ StructuraObjStr=newStructura();
ObjStr.a=10;
ObjStr.SetB(122);
Console.WriteLine("ObjStr.B="+ObjStr.GetB()); }
}
Dupcumseobserv,structurilepotaveadateprivateipoateconinei
poateconinesimetode
2.2.2 Enumeraii
usingSystem;
enumSaptamana
{Luni,Marti,Miercuri,Joi=4,Vineri,Sambata,Duminica}
classProgram
{ staticvoidMain(string[]args)
{ Saptamanaziua=Saptamana.Luni;
if(ziua==Saptamana.Luni)
Console.Write("Lunie{0}Martie{1}\r",(int)Saptamana.Luni,
(int)Saptamana.Marti);

}
}
Enumerrilesunttipuridedatedetipvaloarecreatedeprogramatorn
scopuldeagrupasubunnumeunsetdeconstantesimbolice.
Membriiuneienumerrisenumescenumeratori,listamembrilorenumerrii
seseparprinvirgul.Variabilaziuadetipulenumreinedoarunuldintre
membriienumerrii.Membrilorenumerriilisepotasociavalorintregi.

2.2.3
Clase
classNumeClasa
{
publicinta; //variabilpublic,poatefiaccesatcuObj.a
privateintb; //var.privat,nupoatefiaccesatcuObj.b
publicvoidSetB(intb){this.b=b;}
publicintGetB(){returnb;}
publicstaticshortc;//variabileleimetodelestaticesecreazosingur
//dat
}
2.3
Constante
Reprezintovariabiliniializatiprecedatdecuvntulcheieconstn
timpuldeclarrii.Valoareaeinumaipoatefimodificatpeparcursul
programului.
constinta=7;
conststringsir=''Anaaremere'';
2.4
Conversiintretipuri
shorta=10;
intb=a; //conversieimplicit,nusepierdeinformaie
intc=10000;
shortd=c; //incorect,Nusevacompila
shorte=(short)c;
//corect,serealizeazoconversieexplicitacu
pierderedeinformaie
objecto=null;
o=b//corect,toatetipurileseconvertescnmodimplicitlatipulobject
b=o;//eroare
charc=(char)b;//corect,conversieexplicit
2.5
Observaiidiverse
*nC#NUexistvariabileglobale,totultrebuiedefinitncadruluneiclase
saumetode.
*typeof(variabila)returneazinformaiidesprevariabilavar.
*vara=3.5;varsir=''Ana'';//varesteuncuvntcheiecarenlocuiete
numeleunuitipdedate

2.6

OPERANZI

ANDc

&&

x&&y

evalueazynumaidacxestetrue

||

x||y

evalueazynumaidacxestefalse

x?y:z

evalueazydacxestetrue,altfelevalueazz

Tip.op. op.

Expresii

Descriere

ORc

Primari .

x.m

acceslamembriiclasei,structurii

()

f(x)

apeldemetod

condiio ?:
nal

[]

a[x]

acceslaelem.tabloului

++

x++
x

postincrementare
postdecrementare

new

newT(x)
nwT[x]

creareadeobiecte
crearedetablouri

typeof

typeof(T)

observaiidespretipulT

checked

checked(x)

evalueazexpresiaxnmediicheckedi
unchecked

unchecked unchecked(x)
Unari

+xx

identitateinegaie

!x

negaielogic

~x

negaiepebii

++

++x
x

preincrementare
postincrementare

()

(T)x

conversieexplicit

Multipli */%
catori

x*yx/yx%y

nmulire,mprire,modulo

Aditivi

x+yxy

Adunare,Scdere

x<<y
x>>y

deplasarepebiilastnga
iladreapta

Shiftare <<
>>

Relaion <><=>= x<yx>y


ali
is
xisT
as

operatorirelationali
truedacxesteconvertibilnT,altfelfalse

xasT

xconvertitnTsaunulldacesteimposibil

egalitate ==!=

x==yx!=y

egalsidiferit

ANDl

&

x&y

ANDlogicpebii

XORl

x^y

XORlogicpebii

ORlogi |

x|y

ORlogicpebiti

Atribuir =*=/= x=yx%=y atribuiresimpliatribuirecompus


e
%=+==
<<=>>=
&=^=|=

2.7




TABLOURI

Untablou,arraysauvectoresteostructurdedatececoninevariabilede
acelaitip.nC#tablourilesuntdetipreferin.Elepotfi
unidimensionale(vectori),bidimensionale(matrice)saumultidimensionale.
Vectori
tip[]a;
//desclarareauneireferinedetipultip
a=newtip[n]; //alocareaanelementedetipultipdelareferinaa
sau
tip[]a=newtip[n];
//declarareaicreareaunuivectorpeaceeailinie
sau
int[]a=newint[]{3,4,7,9};//declarare,creareiiniializare
sau
int[]a={3,4,7,9};//acelailucrucamaisus
string[]sir=newstring[]{''Ana'',''are'',''mere''};
string[]sir2={''Lala'',''are'',''pere''};
Accesareaunuielement: a[i]=...
Matrice
tip[,]a=newtip[m,n];
int[,]a=newint[,]{{3,2,1},{6,5,4}};//cuiniializare
int[,]a={{3,2,1},{6,5,4}};//acelailucrucamaisus
Accesareaunuielement: a[i,j]=...
Tablourimultidimensionale
tip[,,]a=newtip[m,n,k];
double[,,]a=newdouble[3,7,8];
int[,,]a={{{1,2,3},{4,5,6}},{{6,5,4},{9,8,7}}};
Accesareaunuielement: a[i,j,k]=...

Tablourineregulate(jaggedarray)
Esteuntabloualecruielementesunttablouri.Elementelepotfitablouri
unidimensionalesauchiarmultidimensionale.
int[][]a=newint[2][];
//tabloulnuestenccompletat,trebuieiniializatfiecareelement
a[0]=newint[6];
a[1]=newint[3];
//Amcreatastfeluntabloude2tablouridintrecareunulde6elementeiar
cellaltde3elemente.
Alteformedecreareatablourilorneregulate:
int[][]a=newint[3][];
a[0]=newint[]{2,4,7,8};
a[1]=newint[]{6,5};
a[2]=newint[]{7,8,8};
sau
int[][]a=newint[][]
{ a[0]=newint[]{2,4,7,8};
a[1]=newint[]{6,5};
a[2]=newint[]{7,8,8};
};
sau
int[][]a=
{ a[0]=newint[]{2,4,7,8};
a[1]=newint[]{6,5};
a[2]=newint[]{7,8,8};
};
sau
vara=new[]
{ a[0]=newint[]{2,4,7,8};
a[1]=newint[]{6,5};
a[2]=newint[]{7,8,8};
};
Accesareaunuitablouneregulatceconinetablouriunidimensionale:
a[i][j]

Tablourineregulatecuelementedetiptabloumultidimensional
int[][,]a=newint[3][,]
{ newint[,]{{5,4},{8,9},{7,4}},
newint[,]{{1,5},{3,5},{9,6}},
newint[,]{{5,3},{5,2},{6,4}}
};
accesareaunuimembru: a[i][j,k]=...
Vectordeobiecte:
usingSystem;
classProgram
{ classA
{ privateinta;
publicintGetA()
{returna;}
publicvoidSetA(inta)
{this.a=a;}
}
staticvoidMain(string[]args)
{ A[]Obj=newA[7];
for(inti=0;i<Obj.Length;i++)
{ Obj[i]=newA();//obiectultrebuiealocat
Obj[i].SetA(i);
Console.WriteLine("Obj[{0}].GetA():{1}.",i,Obj[i].GetA());
}
}
}
C#suportclaseimbricate,nasted.
Observaii:
Numrtoareaelementelorncepedela0iseterminladim1,primul
elementalunuivectorestevector[0],primalinieauneimatriceestematrice[0],
ultimulelementalunuivectorestev[v.Length1].
Vector.Length >returneazlungimeavectorului,dimensiuneasa
Matrice.Length>returneaznrliniixnrcoloane,putemaflansnr
Matrice.GetLength(nrLinie)>returneaznrdeelementedepeacealinie
>Array.Sort(Vector)>realizeazsortareavectorului

Metodeutilizabilepentruvectori

Vector.

Length afieazlungimeanelementeavectorului
BinarySearch(vec,obj)cautobjinveccuinteraaIComporable
BinarySearch(vec,int32,int32,obj)cautaelementenvectorulveccaresunt
egalecuobjsaucuprinsenintervalulspecificatdeceledouvalint32
Clearseteazelementelevectoruluila0,falsesaunothing
Clonecreazocopieavectorului
ConvertAll(tipvec,tipNou)convertetedelatipultivveclatipNou
Copy(vec1,vec2,nr)copiaznrelemdinvec1nvec2
Copy(vec1,vec2,nr1,nr2)copiaznr2elemncepndcualnr1leadinvec1n
vec2
CopyTo(vec,nr)copiaznrelementedinvectorulcurentnvectorulvec
Find(ofT)cautunelementcaresatisfacecondiiiledefinitedepredicatil
returneaz
FindAll(ofT)returneaztoateelementelecarendeplinesccondiia
FindLast(OfT)cautultimulelementcarendeplinetecondiiaofT
FindIndex(OfT)(T(),int32,int32,Predicate(ofT)cautunelementcare
ndeplinetecondiiiledefinitedepredicatireturneazindiceleprimuluielementgsit
carendeplinetecondiiile,seaflnintervalulint32
FindIndex(OfT)(T(),int32,Predicate(ofT))cautelementelecareverific
condiiiledefinitedepredicatncepnddelaindexulspecificadeint32panalacaptul
vectoruluireturnndindecii
ForEach(ofT)efectueazoaciunespecificpefiecareelementalvec.
GetLengthreturneaznumruldeelemente
GetTypereturneaztipulinstaneicurente(derivatedinObject)
GetValue(int32)returneazvaloareadelapozitiaint32
GetValue(int32,int32)returneazvaloareadinmatricedelapozitiaspeci.
IndexOf(vec,obj)returneazprimulindicealobiectuluispecificatdinvec
IndexOf(vec,obj,int32,int32)cautobiectulspecificatireturneazindexul
primeiapariiidincadrulintervaluluideindecispecificatdeceidoiint32
IndexOf(vec,obj,int32)cautobiectulspecificatncepnddelaindexulal
int32leapnlafinalireturneazindexulprimeiapariii
Sort(array,array,int32,int32)sorteazunintervaldeelemententrun
vector(unuldineleconinecheileiarcellaltitemii)bazatpecheiledinprimularray
utilizndIComparable
ToStringconverteteunstringdinobiectulcurent

2.8
iruridecaractere
TipulstringnC#esteunaliaspentruclasaSystem.StringdinNet
Framework.Obiecteledetipulstringncapsuleazunirdecaracterenformat
Unicode.Stringurilesuntimutabile,odatcreatunobiectstring,elnumaipoate
fischimbat,toateoperaiilecaremodificunstringreturneazunaltstring
modificat.
stringdefineteoperatorilor=,!=(diferit),+=,+(concatenare).
usingSystem;
classTestString
{
publicstaticvoidMain()
{
strings1="Salut",s2="Planeta!";
if(s1!=s2)//comparastringuri,nuobiectele
Console.WriteLine("s1!=s2");
if(s2.ToUpper()==s2.ToUpper())
Console.WriteLine(s1.ToUpper());//Afiseaza"SALUT"
s1+=s2;//s1esteacum"SalutPlaneta"
strings=s1.Insert(5,"");//s1nusemodifica
//insereaz""incepandcupozitia5
Console.WriteLine(s);//afiseaza"SalutPlaneta"
//Extragedins,incepandcupozitia6,
//unsubstringformatdin3caractere
s=s.Substring(6,3);
Console.WriteLine(s);//afiseaza"Pla"
}
}

Declarareairurilordecaractere
stringsir=''sirdecaractere...'';
stringsir2;
sir2=''sirdecaractere'';
string[]vectorSir=newstring[3]{''sirul1'',''sirul2'',''sirul3''};
Metodeimportante
sir.Length>returneazlungimeairuluidecaractere
''Anaaremere''.Length>vareturna12
Concatenare:
sir=sir1+sir2;
sir+=sir1; //lairulsirseadaugcaractereleiruluisir1
sir=''Salut''+''Planeta'';
sir=String.Concat(s1,s2,s3);
Formatareastringurilor
strings=String.Format(''a={0},b={1}'',a,b);//{0}referprimulobiect,
a,dinlistadeparametri,{1}referaldoileaobiect,b
floata=123.3456F;douleb=23.4567;strings;
s=String.Format(''a={0,12:E2}\nb={1,12F2}'',a,b);
Console.WriteLine();//Vaafia:
a=
1.233E+002
b= 23.46
..a={0,12:E2}nseamn:0referprimulobiectdinlistadeparam.,12reprezint
limeacmpuluideafiare,Eceresseafiezenformattiinific,3estenumrulde
zecimalecareseafieaz
..b={1,12F2}nseamn:1referaldoileaobiect,b,12estelimeacmpuluide
afiare,Fimpuneafiareanvirgulfiz,2reprezintnumruldezecimale

Accesareasubstringurilorsauacaracterelordepeanumitepoziii:
charc=''SalutPlaneta''[2];//punenccaracterul'l',operatorulcacceseaz
uncaracterindividualalirului,altex.:charc=s1[3];
s=s1.Insert(5,''c'');//irulscaptconinutuliruluis1darcarearepe
poziia5caracterulc
s=s.Insert(5,s1);//delacaracterul5dinsseinsereazs1iardupaceease
completeazcurestuldecaracteredins,irulformatsedepunens
s=s1.Substring(3);//punenirulscaractereledins1ncepnddela
poziia3pnlacapt
s=s1.Substring(2,5);//punenirulscaractereledins1dintrepoziiile2i5

nr=s.IndexOf(subsir);//returneazpoziiairuluisubsirdincadruliruluis,
dacnuexistreturneaz1
nr=s.IndexOf(subsir,i);//cautsubirulsubsitnsncepndcupoziiai
nr=s.LastIndexOf(subsir);//returneazultimaapariiealuisubsitnssau
1dacsubsirnuapututfigsitins
s=s1.Remove(2);//punensiruls1dincareaeliminattoatecaracterele
ncepndcupoziia2
s=s1.Remove(2,7);//punensiruls1dincareaeliminattoatecaracterele
dintrepoziiile2si7
s=s1.Replace(subsir1,subsir2);//punensiruls1dupceaschimbat
subirul1cusubirul2
string[]s=s1.Split('');//spargeiruls1nsubiruridupcaracteruldatca
parametru,ncazulacestaspaiu,icreazunvectordeiruri,fiecareelement
aliruluisconinndunsubirastfelextrasdins.
foreach(stringcuvins)Console.WriteLine(cuv);afieazelementele
vectoruluideiruriscreatmaisus
string[]s=s1.Split(newchar[]{'','\n','\\'});//fragmentareairuluis1
dupmaimultecaractere.
Caractereescape:
\n(linienou),\r(returndecar),\t(tab),\\(caracterul\),\''(ghilimele)
cale=''C:\\DocumentsandSettings\\cos\\Desktop'';
sau
cale=@''C:\DocumentsandSettings\cos\Desktop'';//@spune
compilatoruluisanuprocesezecaractereleescape
Comparareairurilordecaractere
if(s1==s2)Console.WriteLine(''siruriidentice'');
if(s1!=s2)Console.WriteLine(''siruridiferite'');
String.Compare(s1,s2)returneaz:
0>irurilesuntegale
1>s1<s1
1>s1>s2
nr=s1.CompareTo(s2);deasemenea
String.CompareOrdinal(s1,s2)returneaz:
0iruriegale
>0s1>s2alfabetic
<0s1<s2alfabetic
CompareOrdinalrealizeazocompararealfabeticpecaractereipepoziia
nir.

Conversiiirdecaractere<>Valorinumerice
irdecaractere>Valorinumerice
Toatetipurilepredefinite(int,double,float,...)definescmetodaParse()
intn=int.Parse(''365'');
intn=Int32.Parse(365);
intn=Convert.ToInt32(''356'');//segsetenSystem
//Conversiacutestarenprealabil:
intval;
boolrez=Int32.TryParse(''125'',outval);
if(rez==true)
Console.WriteLine(val);
else
Console.WriteLine(''Stringulnuapututfiparsat'');//uneorivalorile
introdusenusuntdetipulntreg,acestlucruvageneraoeroarecarearputea
blocaprogramul,pentruanuaapreaastfeldeerorisepotfolosifunciile
TryParse,parametrul
Alteexemple:
boolvalBool=Convert.ToBoolean(''true'');
byten=byte.Parse("12");
byten;
Byte.TryParse("12",outn);
decimaldecval=Convert.ToDecimal(sir);
floatfval=System.Convert.ToSingle(''23.456'');
floatfval=float.Parse(sir);
doubledval=Convert.ToDouble(sir);
doubledval=double.Parse(''20,4568'');
doubledval=Convert.ToDouble("22E3");
floatfval=(float)Convert.ToDouble(sir);//conversiedinirdecaracteren
valoaredoubleurmatdeconversieexplicitdindoublenfloat
uintn;
uint.TryParse("124569",outn);
longlval=long.Parse(''45680'');
ulong=ulong.Parse(''456987'');

.Netnuimplementeazoperatorul>>dinC++caresfiecapabilsextrag
bytesdinstreamuriisiconverteascdirectntimpuldorit,deaceeavalorile
seintroduccairuridecaractereiarapoisunttransformatennumereprinParse
stringsir=Console.Read();
Int32.TryParse(sir,outnr);//secitesteprimadataunirdecaractereiarapoi
sencearctransformareasanvaloarenumericpentruapermiteprogramului
snuseblochezedacutilizatorulintroducedatecarenusuntnumerice
ncadrulprogramelorcuinterfagrafic,seciteteiruldecaractere
introducenacesteacareesteapoitransformatnvaloarenumericcuTryParse
Valorinumerice>irdecaractere
stringsir;
<tipnumeric>nr=<valoarenumerica>;
sir=nr.ToString();
exemplu:
inta=123654;
stringsir=a.ToString();
doubleb=1236E3;
stringsir2=b.ToString();//sir2vareineirul1,236
boolc=true;
stringsir2=c.ToString();//sir3vareineirulTrue
charc='A';
stringsir=c.ToString();//sirvaretineunirformatdoardincaracterul'A'
ushortnr=123;
stringsir=nr.ToString();

2.9


Funciimatematice

Constanteutile:
short.MaxValue=32767
short.MinValue=32768
ushort.MaxValue=65535
ushort.MinValue=0
int.MaxValue=2147483647
int.MinValue=2147483648
uint.MaxValue=4294967295
uint.MinValue=0
long.MaxValue=9223372036854775807
long.MixValue=9223372036854775808

etc.Toatetipurileaudefinitoconstantminimvaloareiunamaxim

MetodeleClaseiMath:

Math.

publicconstdoublePIesteconstantapi,3.14159265358979323846
publicconstdoubleNaNovaloarecarenuestenumr
publicconstdoubleEbazalogaritmuluinatural,2.7182818284590452354
publicconstdoublePositiveInfinityrezultatulmpririiunuinumr
pozitivla0(zero).SevafolosifunciaboolIsPositiveInfinity(doubled)pentru
atestadacdconineoastfeldevaloare
publicconstdoubleNegativeInfinityrezultatulmpririiunuinumr
negativla0.SevafolosifunciaboolIsNegativeInfinity(doubled)testeaz
dacdconineoastfeldevaloare
Abs(<tip_numeric>)returneazmodulul,esteimplementatpentrutoate
tipurilenumerice(Decimal,Double,Int16,Int32,Int64,SByte,Single)
intn=Math.Abs(123);
doubleSqrt(Doubled)returneazrdcinaptrataluid
Acos(doublenr)nrn[1,1],returneazunghiulnradianialcrui
cosinusestedatcaparametrulnr
Acos(doublenr)nrn[1,1],returneazunghiulnradianialcruisinus
estedatcaparametrulnr
Atan(doublenr)returneazunnumrreprezentndunghiulacarui
tangentestenumrulnr,numrulreturnatestecuprinsnPI/2..PI/2
Atan2(doubley,doublex)returneazvaloareaunuiunghiacrui
tangentesteegalcuy/x.(x,y)reprezintununghinplanulCartezian.
Int64BigMul(Int32a,Int32b)returneaza*b
decimalCeiling(decimald)returneazceamaimicvaloarentreagmai
marecavaloaread
doubleCeiling(doubled)lafel
doubleCos(doublerad)returneazcosinusulunuiunghinradianidatca
parametru
doubleCosh(doubleval)returneazcosinusulhiperbolicalunuiunghin
radianidatcaparametru
doubleSin(doublerad)returneazsinusulunuiunghinradianidatca
parametru
doubleSin(doublerad)returneazsinusulhiperbolicunuiunghin
radianidatcaparametru
doubleTan(doublerad)returneaztangentaunuiunghinradianidatca

parametru
doubleTanh(doublerad)returneaztangentahiperbolicaunuiunghin
radianidatcaparametru
intSign(decimal/double/Int64/Int16/Int32/SByte/Singleval)returneaz1
dacval<0,0dacval==0sau1dacval>0
decimal/doubleTruncate(decimal/double)returneazvaloarealuid
aproximatlacelmaiapropiatntregspre0(zero)
decimal/doubleRound(decimal/doubleval)returneazntregulcelmai
apropiatdeval,rezultatulesteDecimalsauDouble,nuesteinteger
decimal/doubleRound(decimal/doubled,Int32decimals)returneazcel
maiapropiatnumrdevaloarealuiddarcareconineunnumrdecifre
fracionaleegalecudecimals
decimal/doubleFloor(decimal/doubled)returneazcelmaimarentreg
maimicsauegalcud
intDivRem(Int32/Int64a,Int32/Int64b,outInt32/Int64rez)returneazn
rezrestulmpririiluialab
doubleExp(doubled)returneazelaputeread
doubleLog(doubled)returneazlogaritmulnbazaealluid
doubleLog(doublea,doublenewBase)returneazlogaritmuluiluian
bazanewBase
doubleLog10(doubled)returneazlogaritmulnbaza10aluid
doublePow(doublex,doubley)returneazxlay,xbaza,yexponentul
tipMin(tipa,tipb)returneazadaca<=b,baltfel
tipMax(tipa,tibb)returneazadaca>=b,baltfel
doubbleIEEEReminder(doublex,dubley)xdempritul,y
mpritorul.Returneazxy*QundeQestectulmpririiluixlayrotunjit
lacelmaiapropiatntreg.Dacy=0,atuncisereturneazNaN

3.


Elementedeprogramarestructurat

3.1
DeciziiIF
if(expresiebooleana)
{
instructiuni...
}
elseif(expresiebooleana)
{
instructiuni...
}
else
{
instructiuni...
}
Ex.1:
stringsir=Console.ReadLine();
intnr=int.Parse(sir);
if(x<0)
Console.WriteLine(''intregulintrodusestemaimiccazero'');
elseif(x==0)
{
Console.WriteLine(''intregulintrodusestezero'');
Console.WriteLine(''varugamintroducetioaltavaloare'');
}
else
Console.WriteLine(''intregulintrodusestemaimarecazero'');
OBServaii:
ncazulifurilorimbricate,elseulseasociazcucelmaiapropiatifcarenu
areelse.

3.2

DeciziaSweetchCase

switch(n)
{
caseval1: bloc_instructiuni;
break;
caseval2: bloc_instructiuni;
break;
default:
bloc_instructiuni;
}
npoatefiovaloaredetipulchar,ntreg,string
val1..suntvaloripecarelepoateluan
nC#nuserealizeazcdereaimplicitlaseciuneaurmtoare,Ex:
intk=0;
switch(k)
{ case0: Console.WriteLine(''cazul0'');
//gotocase1
case1:
case2: Console.WriteLine(''cazul1si2'');
break;
}
Cdereaprinramurisepoatefacenumaipentrucazurivide,cumecase1.
Dacdorimunsaltdirectlaoanumitetichettrebuiefolositinstruciuneade
saltnecondiionatgoto.Coduldesusnusevacompila,trebuiedecomentat
comentariulgotocase1;cazncareecranulvaarta:
cazul0
cazul1si2

3.3

CiclulFor

for(expr_start;expr_stop;expr_continuare)
{ instruciuni....
}
for(;;)
instruciuni....//cicluinfinit
for(inti=0;i<12;i++)
Console.WriteLine(''i={0}'',i);
for(intk=0;k<12;k++)
{
Console.WriteLine(''k={0}'',k);
Console.WriteLine(''***************'');
}
Variabileleiiksuntdefinitencadrulblocurilorfor,elesuntvizibiledoar
ncadrulacestorblocuri.

3.4
Ciclulforeach

foreach(tipidentificatorinexpresie)
{ bloc_instructiuni
}
Ex:
int[]a={10,20,30};
foreach(intjina)
Console.WriteLine(''j=''+j);
string[]st={''Ana'',''are'',''mere''};
foreach(stringsinst)
Console.WriteLine(s+'''');
ForecchestenounfamilialimbajelorC,Elestefolositpentruiterarea
printreelementeleunuitablousaualeuneicolecii.

3.5



Ciclulwhile

Pretestareacondiiei:
Posttestareacondiiei:
while(expresie)
{ blocinstructiuni;
}

do
{ bloc_instructiuni;
}while(expresie);

inta=5;
while(a>0)
a;
do
{
x;
}while(x>0);

3.6
Instruciunagoto

gotoeticheta;
........
eticheta:

eticheta:
..........
gotoetcicheta;

3.7
Break,continue,return

continuedacsepunentrobuclatunciarelocsaltlanceputulbuclei

for(inti=0;i<=10;i++)
{ if(i%2==0)
continue;//revinelatestareacondiieiurmncazurileipar
Console.WriteLine(''iesteimpar,i={0}'',i);
}
breakiesedincelmaiapropiatciclu
for(inti=0;;i++)
if(i==100)break;//unciclucarenufacenimicaltcevadectsincrementeze
pnla100valoareadini
returnterminexecuiafuncieincareesteplasatreturnndvaloaredat
intAdd(inta,intb)
{returna+b;}
voidAfiseaza()
{ Console.WriteLine(''mesaj1'');
return;
Console.WriteLine(''Acestmesajnuvamaifiafisat'');
}

FIIERE

usingSystem;
usingSystem.IO;
classProgram
{ staticvoidMain(string[]args)
{
stringfin=@"C:\Exemple\numere.in";
stringfout=@"C:\Exemplenumere.out";
StreamReadersr=null;
StreamWritersw=null;
if(File.Exists(fin))
sr=newStreamReader(fin);
if(File.Exists(fout))
sw=newStreamWriter(fout);
string[]s=null;
stringlinie=null;
intx=0;
//Citestecateoliniepanalacapatulfisierului
while((linie=sr.ReadLine())!=null)
{ s=linie.Split('');//desparteliniainstringuri
foreach(stringnrins)
{ x=int.Parse(nr);//obtinevalnumerica
sw.Write("{0,5}",x);//oscrieinfisier
}
sw.WriteLine();
}
sr.Close();
sw.Close();
}
}
ToateintrrileiieiriledinC#,lafelcainC++sauJava,serealizeaz
prinstreamuri.Unstreamesteoreprezentareabstractaunuidispozitiv
fizic(memorie,fiier,reea,..)ncareinformaiasepoateaccesadoarcteun
byteodat.ntrunstreaminformaiacirculntrunsingursensiarunprogram

nuscriedirectntrunfiiercintrunstreamdeieirecarereprezintfiierul.
Existstreamurideieire(scriedate)istreamurideintrare(citestedate).
.NetFrameworkdefinetenspaiuldenumeSystem.IOaceleclasecare
reprezintstreamuricufiiere.
ClaseleStreamReaderiStreamWritercitescrespectivscriucaracteren
streamuri.EleconinmetodeleReadLine()iWriteLine().Acesteacitescsau
scriupnlantlnireacaracteruluinewline.
Oconstantirdecaracteresenumeteiverbatimdacseprefaeazicu
caracterul@efectulfiindcseneglijeazcaractereleescape.
nexpresiasw.Write(''{0,5}'',x);,0semnificprimulobiectdeafiat,
adicx,iar5cerealinierealastngaarezultatuluipeuncmpdelime5
Dacfiieruldeintrarepoateaveacaseparatorintredounumereaceeai
liniemaimultdectunsingurspaiu,atuncivomfolosiversiuneaSplit()cu
separatori,
File.Exists()testeazexistenafiierului
StreamWritersw=null;
if(File.Exists(fout))
sw=newStreamWriter(fout);//dacswnuesteiniializatcu
null,schimbrilerealizatenbloculifnuvorfivizibiledinexterior

4.1

MetodeleclaseiFile

usingSystem.IO;
File.
AppendAllLines(Stringcale,IEnumerable(OfString),Encoding)
adaugliniilaunfiierfolosindocodificarespecificiapoinchidefiierul,
encodingpoatelipsi
appendAllText(stringcale,stringcontinut,Encodingcodificare)
adaugirulconinutlafiierulcalefolosindcodificareadat,codificarea
poartelipsi
CodificareEncoding:

System.Text.ASCIIEncoding
System.Text.UnicodeEncoding
System.Text.UTF32Encoding
System.Text.UTF7Encoding
System.Text.UTF8Encoding

voidCopy(stringsursa,stringdestinatie,booloverwrite)Copiazun
fiierulsursndestinaie.Copiereasefacecusuprascrieredacoverwrite=
truesaucuadugaredacoverwrite=false.overwritenueobligatoriu
staticFileStreamCreate(stringpath,intbufferSize,FileOptionsoptions,
FileSecurityfileSecurity)creazsausuprascriefiierulpathinndcontde
dimensiuneadebuffer,opiuniledefiierisecuritateaspecificate.bufferSize
esteovariabilInt32cedescrienumruldebytespentrucitireaiscrieren
fiier.optionsestedetipulSystem.IO.FileOptionsidescriecumsfiecreat
sausuprascrisfiierul.
options:
None

frparametriadiionali

WriteThrough

systemulartrebuisfiescrisfrcacheintermediarcidirectpedisc

Asynchronous

fiierulpoatefifolositpentrucitiresauscriereasincrona

RandomAccessf

fiierulesteaccesatrandom

DeleteOnClose

fiierulpoatefiterscndnumaiesteutilizat

SequentialScan

fisierultrebuiesfieaccesatsecvenialdelanceputsprefinal

Encrypted

fisierulestecriptatinupoatefidecriptatdectdeproprietar

fileSecuritydetermincontrolaccesuliauditulfisierului
bufferSize,optionsifileSecuritysuntparametriopionali
StreamWriterCreateText(stringpath)creazsaudeschideunfiierpentru
ascrietextcodatUTF8
voidDecrypt(stringpath)decripteazunfisiercareafostcriptatde
utilizatorulcurentfolosindometoddecriptare
voidDelete(stringpath)primetecaparametrunumelefisieruluideters
voidEncryp(stringpath)cripteazunfisierastfelnctdoarutilizatorul
carelacriptatlpoatedecripta
boolExists(stringpath)determindacfiierulexist
FileSecurityGetAccessControl(stringpath,AccessControlSections
incluideSections)returneazunobiectdetipulFileSecuritycencapsuleaz
listadeintrricontrolaccesalefiieruluidatprinpath.includeSectionseste
opionalispecifictipuldeobiectlistdecontrolacces.
FileAttributesGetAttributes(stringpath)iaatributeledefiierale
fiieruluipath
DateTimeGetCreationTime(stringpath)returneazostructurdedate

DateTimeceretinedataitimpulcreriifiieruluisaudirectoruluipath.Timpul
esteexprimatntimpullocal.
DateTimeGetCreationTimeUtc(stringpath)lafeldoarctimpuleste
exprimatnUTC
DateTimeGetLastAccessTime(stringpath)returneazostructur
DateTimecarereinedatasitimpulultimuluiaccesalfiieruluisaudirectorului
DateTimeGetLastAccessTime(stringpath)//nUTC
DateTimeGetLastWriteTime(stringpath)returneazostructur
DataTimecareconinedataitimpulultimeiscrierinfiiersaudirectorpath.
DateTimeGetLastWriteTimeUtc(stringpath)//nUTC
DateTime:proprieti:Date,Day,DayOfWeek,DayOfYear,Hour,Kind,
Millisecond,Minute,Month,Now,Second,Ticks,TineOfDay,Today,
UtcNow,Year
FileStreamOpen(stringpath,FileModemode,FileAccessaccess,FileShare
share)deschideunstreamdefiierpentrufiieruldatcaparametru,nmodde
citire,scriere,citireiscrieredepinznddeopiuneamodealeas.path
reprezintcaleainumelefiierului,modedescriemoduldedeschidereal
fisierului:FileMode.CreateNewcreazunnoufiier,dacexistdejaun
fisiercuacelainume,atuncisegenereazoeroaredetipulIOException
FileMode.Createcreazunnoufiier,dacacestadejaexist,este
suprascris
FileMode.Opendeschideunfiierdejaexistent.Segenereazo
eroaredetipulSystem.IO.FileNotFoundExceptiondacacestanuexist
FileMode.OpenOrCreatedeschidefiieruldacacestaexist,dac
nucreazaltulcunumelespecificat.
FileMode.Truncatedeschideunfiierdejaexistent.Odatdeschis,
fiierultrebuietrunchiatastfelnctdimensiunealuisfie0bytes.Necesit
FileIOPermissionAccess.Write,ncercridecitiredinfiiervorgeneraoeroare
detrunchiere.
FileMode.Appenddeschideunfiierdacacestaexistdejaimut
cursoruldescrierelasfritulfiierului,dacfiierulnuexist,acestaeste
creat.ncercareadeagsiopoziienaintedesfritulfiieruluivagenerao
eroaredetipulIOException.
FileStreamOpenRead(stringpath)deschidefiierulpathpt.citire
FileStreamOpenText(stringpath)deschidefiierulpentrucitire

FileStreamOpenWrite(stringpath)deschideunfisierdejaexistentpentru
scriere
byte[]ReadAllBytes(stringpath)deschideunfiiernmodbinar,citete
coninutulsuntrunirdeocteiiapoinchidefiierul.
string[]ReadAllLines(stringpath)deschideunfiiertext,citetetoate
liniiledineldepunndulencteunelementalunuivectorstringiarapoi
nchidefiierul
string[]ReadAllLines(stringpath,?Encodingencoding)deschidefisierul,
citetetoateliniilenformatulspecificatdeencoding,apoinchidefiierul
stringReadAllText(stringpath,?Encodingencoding)deschidefiierul,
citetetoateliniileluinformatulspecificat,apoinchidefiierul
IEnumerable<string>ReadLines(stringpath,Encodingencoding)citete
liniiledintrunfiiernformatuldat,encodingpoatelipsi
voidMove(stringsourceFileName,stringdestFileName)mutfiierul
srouceFileNamendestFileName.Dacsursaidestinaiaseaflpeaceeai
partiie,sursaestetears,dacseaflpepartiiidiferite,sursaepstrat.
voidReplace(stringsourceFileName,stringdestFileName,string
destBackupFileName,bool?ignoreMetadataErrors)nlocuieteconinutul
fiieruluidestFileNamecuceldinsourceFileNametergndfiieruloriginali
crendunbackupalfiieruluinlocuit.ignoreMetadataerrors==trueatuncise
ignorerorile,esteunparametruopional.
voidSetAccessControl(stringpath,FileSecurityfileSecurity)aplic
opiuniledefinitedeFileSecurityfiieruluispecificatdecale.
voidSetAttributes(stringpath,FileAttributesfileAttributes)aplic
atribuiilespecificatedeobiectulfileAttributesfiieruluidefinitdepath
voidsetCreationTime(stringpath,DataTimecreationTime)seteazdata
ioracreriifiierului.
voidSetLastAccessTime(stringpath,DataTimelastAccessTime)seteaz
dataioraultimeiaccesri
voidSetLastWriteTime(stringpath,DataTimelastWriteTime)seteaz
dataioraultimeiscrierinfiier.
staticvoidWriteAllBytes(stringpath,byte[]bytes)creeazunnoufiier,
scrieocteiispecificaiiapoinchidefiierul.Dacfiierulexisteste
suprascris.
staticvoidWriteAllLines(stringpath,string[]contents,?Encoding
encoding)creeazunnoufiier,scriestringurilespecificateiapoinchide

fiierul.
Encoding:
System.Text.ASCIIEncoding
System.Text.UnicodeEncoding
System.Text.UTF32Encoding
System.Text.UTF7Encoding
System.Text.UTF8Encoding
nmodnormalutilizeazUTF8
staticvoidWriteAllText(stringpath,stringcontents,?Encodingencoding)
creeazunnoufiier,scrieirulspecificatutilizndcodareaspecificatdac
aceastaestedat.nmodimplicitfoloseteUTF8.
using System;
using System.IO;
class Test
{
public static void Main()
{
string path = @"c:\temp\MyTest.txt";
if (!File.Exists(path))
{
// Create a file to write to.
using (StreamWriter sw = File.CreateText(path))
{
sw.WriteLine("Hello");
sw.WriteLine("And");
sw.WriteLine("Welcome");
}
}

// Open the file to read from.


using (StreamReader sr = File.OpenText(path))
{
string s = "";
while ((s = sr.ReadLine()) != null)
{
Console.WriteLine(s);
}
}

//Sapus'?'nfaaparametriloropionali

Scriereanfiieretext:
using System;
using System.IO;
using System.Text;
class Test
{
public static void Main()
{
string path = @"c:\temp\MyTest.txt";
// This text is added only once to the file.
if (!File.Exists(path))
{
// Create a file to write to.
string createText = "Hello and Welcome" +
Environment.NewLine;
File.WriteAllText(path, createText);
}
// This text is always added, making the file longer over time
// if it is not deleted.
string appendText = "This is extra text" +
Environment.NewLine;
File.AppendAllText(path, appendText);
// Open the file to read from.
string readText = File.ReadAllText(path);
Console.WriteLine(readText);
}
}

Citireadatelordinfiieretext:
using System;
using System.IO;
using System.Text;
class Test
{
public static void Main()
{
string path = @"c:\temp\MyTest.txt";
// This text is added only once to the file.
if (!File.Exists(path))
{
// Create a file to write to.
string createText = "Hello and Welcome" +
Environment.NewLine;
File.WriteAllText(path, createText, Encoding.UTF8);}
// This text is always added, making the file longer
//over time if it is not deleted.
string appendText = "This is extra text" +
Environment.NewLine;
File.AppendAllText(path, appendText, Encoding.UTF8);
// Open the file to read from.
string readText = File.ReadAllText(path);
Console.WriteLine(readText);
} }

Adugareadetextnfiieretext
using System;
using System.IO;
class Test
{
public static void Main()
{
string path = @"c:\temp\MyTest.txt";
// This text is added only once to the file.
if (!File.Exists(path))
{
// Create a file to write to.
using (StreamWriter sw = File.CreateText(path))
{
sw.WriteLine("Hello");
sw.WriteLine("And");
sw.WriteLine("Welcome");
}
}
// This text is always added, making the file longer
over time
// if it is not deleted.
using (StreamWriter sw = File.AppendText(path))
{
sw.WriteLine("This");
sw.WriteLine("is Extra");
sw.WriteLine("Text");
}
// Open the file to read from.
using (StreamReader sr = File.OpenText(path))
{
string s = "";
while ((s = sr.ReadLine()) != null)
{
Console.WriteLine(s);
}
}
}

Setareaatributelor
using System;
using System.IO;
using System.Text;
class Test
{
public static void Main()
{
string path = @"c:\temp\MyTest.txt";
// Create the file if it exists.
if (!File.Exists(path))
{
File.Create(path);
}
FileAttributes attributes = File.GetAttributes(path);
if ((attributes & FileAttributes.Hidden) ==
FileAttributes.Hidden)
{
// Show the file.
attributes = RemoveAttribute(attributes,
FileAttributes.Hidden);
File.SetAttributes(path, attributes);
Console.WriteLine("The {0} file is no longer
hidden.", path);
}
else
{
// Hide the file.
File.SetAttributes(path, File.GetAttributes(path) |
FileAttributes.Hidden);
Console.WriteLine("The {0} file is now hidden.",
path);
}
}
private static FileAttributes
RemoveAttribute(FileAttributes attributes, FileAttributes
attributesToRemove)
{
return attributes & ~attributesToRemove;
}
}

5.

Spaiidenumeidirectivepreprocesor

5.1

Spaiidenume

Clasecunumeidenticesepotaflannamespaceuriinclusenaceeaisurs.
Compilatorulnuvatiipecaresofoloseasc.Deaceeasainventatmecanismul
spaiilordenume.Unspaiudenumepoateincorporaunaltspaiudenumecarepoate
incorporaaltspaiudenumeitotaa,decispaiiledenumepotficoncentrice,
imbricate(nested).
namespaceA
{ namespaceB
{ namespaceC
{}
staticvoidMain(){}
}
}
DacnnprogramulnostruincludemnamespaceulA,vomputeafolositoate
claseledeclaratenacestadarNUiclaseledeclaratennamespaceulBsauC,adica
claseledinnamespaceurileincluse.
Accesareaclaselordinnumedespaii:
a)
prinspecificareacompletanumelui
publicclassExemplu
{ staticvoidMain()
{ System.Windows.Forms.ButtonBut=newSystem.Windows.Forms.Button();
}
}
b)
utilizndusing
usingSystem.Windows.Forms;
publicclassExemplu
{ staticvoidMain()
{ ButtonBut=newButton(); }
}
Pentrucaprogramuldetipconsoldelapunctulb)sfuncionezetrebuieaduso
referinsprespaiuldenumeSystem.Windows.Forms.nSolutionExplorerseface
clickdreaptapenumeleproiectului,seapasAddreferenceiarntabsheetulsealege
System.Windows.FormsiseapasOK.
c) utilizndaliasuridenamespaceuri
usingN=System.Windows.Forms;
publicclassExemplu
{ staticvoidMain()
{ N.ButtonBut=newButton(); }
}

5.2 DirectivePreprocesor
Numelesimbolicesedefinesccudirectiva#definenainteaoricreisecvenede
coddinprogram.Directivele#if,#else,#elseifsepotdefiniininteriorulsecvenelor
decod.
#defineDEPANARE
//codneafectatdedirectiva#define
#ifDEPANARE
//codcaresecompileazdacestedefinitnumeleDEPANARE
#else
//codcaresecompileazdacanuestedefinitDEPANARE
#elseif
//codneafectatdepreprocesor
#undefDEPANARE
//Depanarenumaiestecunoscutdepreprocesor

6.

ProgramareOrientatObiectPOO

Programareaorientatobiectesteoparadigmdeprogramare(stildeprogramare)
foarteutilizatlamomentuldefa.Pleacdelaaplicareafeluluiumandeagndin
scriereadeprograme.Omulpercepeobiecteledinviaarealicreeaznminteasa
proieciiabstractealeacestora,reinensuirilecelemaiimportantealeacestora.De
asemenea,elgrupeazobiectelecareaucaracteristicicomunenclasedeobiecte.n
programareafostnevoiedeomaistrnslegturntredateifunciilecareexecutau
operaiipedate.POOneajutscremaceastlegturntredateifunciipecare
acumlevomnumimetode.Dinpunctuldevederealomuluiderndoclasesteun
ablondupcaresecreeazobiecte,omatri.nprogramareclasesteunfelde
structurcepoatenglobaifunciiidispunedemecanismedeprotecieadatelorpe
careleconine.
MecanismelefundamentalealePOO
1. AbstractizareaConstnselectareansuirilorimportantealeobiectelori
omitereacelormaipuinimportante.Astfelobiectelecareaunsuiricomunesunt
grupatenclase.Membriiclasei,dateleimetodeledefinescacestetrsturi.
2. ncapsulareaUnobiectncapsuleazdateimetodecareacioneazasupra
datelor.Programareaorientatobiectofermecanismedeprotecieaaccesuluila
dateleclaselor.Specificatoriiprivate,protected,publicindicmoduldeaccesladatele
imetodeleconinutedeclas.Interaciuneacudateleconinutenclaseestede
preferatssefacprinmetodepubliceiardatelesfienmareparteprivate.
3. MotenireaOclaspoatemotenicmpurileimetodeleuneiclasedebaz.
Clasacaremoteneteoaltclassenumeteclasderivatiarclasamotenitse
numeteclasdebaz.Motenireaajutmultlareutilizareacodului,practicfrea
programareaarfimultmultmaidificil.Odatscrisoclas,cndavemnevoiedeo

clascaresimplementezealtecaracteristicimaispecialedaravemnevoieide
funcionalitileclasepecaredejaamscriso,nutrebuiedectsdeclarmclasanou
caderivatdinclasadebazpecaredejaoavemisaadugmnoiledateimetode.
Practicnicinuneamputeaimaginacearnsemnaprogramareainterfeelorgrafice
actualefraceststildeprogramare.Avemdefiniteclasestandardpentrubutoane,
ferestre,textboxurietc,noinutrebuiedectsspecificmvaloripentruproprietile
acestoraisadugmcodnmetodelecucareacestearspundlaevenimenteledin
lumeaextern.nC#toateclaselederivdinclasadebazobject.
4. Polimorfismnseamnaaveamaimulteformeireprezintcaracteristicaunei
interfeedeafifolositcuaciunimultiple.Interfacomun,aciunimultiple.O
metoddeobinereapolimorfismuluisefaceprinmotenire:oclasdebazpoate
aveadoarantetulpentruoanumitmetodurmndcaclaselederivatesimplementeze
fiecareoabordarespecificpentrumetodarespectiv,laapelareametodeirespective
dinobiectediferitecreatepebazaclaselorderivatedinaceaclasdebaz,efectelevor
fidiferite.
C#suport6tipuridestructuridedate:
1. classclas
2. structstructuridetipulcelorcunoscutencelelaltelimbajedeprogramare
3. tablouvector
4. enum
5. delegate
6. interface

6.0.1

Structurile

publicstaticStructura
{ publicinta;
privataintb;
publicStructura(int_a,int_b)
{ a=_a;
b=_b;}
}
6.0.2

1)Structurilesunttipurivaloarentimp
ceclaselesunttipurireferin.
2)Nusuportmotenirea.
3)Nusuportaconstructorifrparametri.
4)Nuaudestructori.

Enum

enum Days {Sat=1, Sun, Mon, Tue, Wed, Thu, Fri};


int x = (int)Days.Sun;
enum Range :long {Max = 2147483648L, Min = 255L};
enumMonths:byte{Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec};

6.0.2
Delegate
Delegateesteuntipcarereferometod.Odatceundelegateesteasignatunei
metodesevacomportaprecumaceametod:
publicdelegateintPerformCalculation(inta,intb);

6.1

CLASE

Claselesuntentitilogicecaremodeleazobiectedinlumearealsauobiecte
abstracte.Claselencapsuleazdate(cmpuri)ifuncii(metode).
classClasa
{
//cmpuri
atributtip_dataVariabila;
//metode
atributtip_data_returnataMetoda(parametri);
}
Atributulsaumodificatoruldeaccespentrudatesaumetode:
Atribut
Descriere
public

Accesnelimitat,accesulsefaceprinoperatorulpunct.:
Obiect.variabila=...;

private

Acceslimitatlapropriaclas.Accesullavariabilelemembre
claseidinafaraeisefacprinmetodepublice

protected

Acceslimitatlapropriaclasilaclaselederivate

internal

Acceslimitatlaprogramulcareconineclasa

protected
internal

Acceslimitatlaprogramilaclaselederivate

Dacmodificatoruldeacceslipsete,atuncimembrulrespectivestenmodimplicit
private.
Creareaobiectelor
classClasa
{....}
......naltclas,metod......
ClasaObj=newClasa();
ObjestereferinalaobiectuldetipClasacaresealocdinamiccunewClasa().
Clasa()esteconstructorulclaseiClasa.
AccesareamembrilorpubliciaiClaseisefaceprin:
Obj.Variabila=...;
Obj.Metoda();

p1.cs
usingSystem;
classClasa
{
privateinta;
publicintb;
publicClasa(inta,intb)
{
this.a=a;this.b=b; }
publicClasa(inta)
{
this.a=a;
}
publicintGetA()
{
returnthis.a; }
publicvoidSetA(inta)
{
this.a=a;
}
publicClasa(){;}
}
publicclassProgram
{
publicstaticvoidMain()
{
ClasaObj1=newClasa();
ClasaObj2=newClasa(12,13);
ClasaObj3=newClasa(3);
Obj1.SetA(123);
Obj1.b=321;
Console.WriteLine(Obj1.GetA());
Console.WriteLine(Obj1.b);
}
}
$gmcsp1.cs
$winep1.exe
123
321
DacnusespecificniciunconstructoratunciC#vageneraunconstructorimplicit,
Clasa(),frparametri.Dacsespecificcelpuinunconstructor,C#nuvamaigenera
constructorulimplicitastfelcdacnuadugampublicClasa(){;}lacreareaunui
obiectcuClasaObj=newClasa(),C#vageneraoeroare,nugseteconstructorul
Clasa().
Claselesuntnfaptstructuridedatececoninecmpuri(variabile)imetode(funcii
careajutlaprelucrareadatelor).Claseleaumecanismedencapsulareainformaiei
astfelncteasnupoatfiaccesibildirectdinafar.

6.1.2

METODE

Metodaesteunblocdecodcarepoatefiapelatdindiferiteprialeprogramului
sauchiardinalteprograme.
Cndometodesteapelat,eaiexecutcodulapoitransfercontrolulcodului
careaapelato.
tipNumeMetoda([listaparametri])
{
/*codulmetodei*/
}
tippoatefi:
void:funcianureturneaznimic
tipuriledefinitedelimbajulC#
tipdefinitdeutilizator,oclas,ostructur...
Ex.:
publicintSuma(inta,intb)
{ returna+b; }
6.1.2.2 Trimitereaparametrilorprinvaloareiprinreferin
nexempluldemetoddemaisusmetodaSumanuareacceslalocaiiledin
memoriealevariabilelorcareisedaucaparametrii,laapelul:
intx=3,y=5;
Obj.Suma(x,y);//funciaprimetedoarvalorilevariabilelorxiy(trimitereaprin
valoarea)inupoateaveaniciunefectasupraconinutulvariabilelorxsiy.
Uneoridorimcafunciaspoatacionaasupraconinutuluivariabilelortrimiseca
parametrii,dorimdeexemplusinterschimbmconinutuladouvariabile,atunci
trebuiestrimitemreferinelecelordouvariabile.
publicvoidSchimba(refinta,refintb)
{ intaux;
aux=a;a=b;b=aux; }
...........apelulmetodei...........
intx=3,b=5;
Obj.Schimba(refx,refy);
//Obj.Schimba(2*a1,b2);//GRESITargumentelenusuntvariabiledememorie.
Pentrutrimitereaprinreferinsefolosetecuvntulcheierefattndefiniia
metodei,publicvoidSchimba(refinta,refintb),ctinapelulei,Obj.Schimba(ref
x,refy)

usingSystem;
publicclassClasa
{
publicintSuma(inta,intb)
{ returna+b; }

publicvoidSchimba(refinta,refintb)
{ intaux;
aux=a;a=b;b=aux;
}

publicclassProgram
{
publicstaticvoidMain(string[]args)
{
ClasaObj=newClasa();
intx=3,y=5;
Console.WriteLine("x={0},y={1}",x,y);
Console.WriteLine("{0}+{1}={2}",x,y,Obj.Suma(x,y));
Obj.Schimba(refx,refy);
Console.WriteLine("Dupainversare");
Console.WriteLine("x={0},y={1}",x,y);
}
}

nC#toatefunciilerespectivvariabileletrebuiesfieconinutenclase,deaceea
C#esteunlimbajcompletorientatobiectlafelcaiJava.Nuputemaveavariabilesau
metodeindependentedeoclas.Pentruaaccesaometodtrebuiescremunobiect
detipulclaseicareconinerespectivametodisaccesmmetodaprinacelobiect.

6.1.2.3
PARAMETRIDEIEIRE
Parametriideieiresuntutilizaipentrutransmitereadatelordininteriorulmetodei
sprecodulcareaapelato.
Sevautilizamodificatoruloutattndefiniiectinapelulmetodei.
Argumentultransmisfuncieitrebuiesfieovariabilinuoexpresie.Variabila
transmisnutrebuiesaibneapratovaloarenaintedeafiutilizatcaparametru
actual.
usingSystem;
publicclassClasa
{ publicvoidMetoda(outintx)
{ //inty=x;//eroare!!!
x=123;
x++;
}
}
publicclassProgram
{
publicstaticvoidMain(string[]args)
{
ClasaObj=newClasa();
intz;
Obj.Metoda(outz);
System.Console.Write("z={0}",z);
}
}
z=124;
Lafelcaincazulparametrilorreferin,parametriideieire(outputparameters)
suntaliasuripentruparametriiactuali.Oriceschimbareasupraunuiparametrudeieire
seproducedefaptasupraargumentuluifunciei.
Parametriideieireauurmtoarelecaracteristici:
ninteriorulmetodei,parametrilordeieiretrebuiesaliseatribuievalori
naintedeaseutilizavaloareaacestora.Dinacestmotiv,valorileiniialeale
parametriloractuali(argumente)suntnenecesareinicinuestenevoiesiniializm
argumentelenaintedeapelulmetodei.
tuturorparametrilordeieiretrebuieslefieatribuitevalorinaintederevenirea
dinapel.

6.1.2.4
PARAMETRITABLU
Parametriitablouadmit0saumaimuliparametriactualipentruunacelai
parametruformal.
Restricii:
poateexistadoarunsingurparametrutablounlistadeparametriformali;
dacexistunparametrutablou,atunciacestaesteultimulnlistadeparametri
formali;
sevautilizamodificatorulparamsndeclaraiedarnuinapelulmetodei.
Parametriitablousedeclarncadrndtipulparametruluilastngacumodificatorul
paramsiarladreaptacuoperatoruldeindexare:[].
usingSystem;
publicclassClasa
{
publicvoidMetoda(paramsint[]T)
{
foreach(intiinT)
System.Console.Write("T[{0}]={1}|",i,T[i]);
}
}
publicclassProgram
{
publicstaticvoidMain(string[]args)
{
ClasaObj=newClasa();
System.Console.WriteLine("PrimulExemplu");
Obj.Metoda(1,2,8);
System.Console.WriteLine("AldoileaExemplu");
int[]A={2,4,6,8,10};
Obj.Metoda(A);
}
}

6.1.2.5

SUPRANCRCAREAMETODELOR
SUPRANCRCAREACONSTRUCTORILOR

C#suportsuprancrcareametodelor.Practicsepotdefinidousaumaimulte
metodecuacelainumenaceeaiclas.Metodeletrebuiesdiferecanumri/sau
tipulparametrilorformali.
usingSystem;
publicclassClasa
{ privateinta;
publicClasa(){a=2;}
publicClasa(inta)
{ this.a=a;
}
publicvoidMetoda()
{ System.Console.WriteLine("{0}*1={1}",a,a*1); }
publicvoidMetoda(intb)
{ System.Console.WriteLine("{0}*{1}={2}",a,b,a*b);
}
publicvoidMetoda(charc)
{ System.Console.WriteLine("{0}*{1}={2}",a,(int)c,a*(int)c);
}
//publicintMetoda(){}//ERROAREtipulparametrului
//formaltrebuiesfieacelasi
}
publicclassProgram
{ publicstaticvoidMain(string[]args)
{ ClasaObj1=newClasa();//seapeleazaprimulconstructor
ClasaObj2=newClasa(10);//seapeleazaaldoileaconstructor
Obj1.Metoda();
Obj1.Metoda(23);
Obj1.Metoda('A');
}
}
Constructoruldeinstanesteometodspecialaclaseicareareroluldeaconstrui
obiecte.Fiecareclasarecelpuinunconstructor,ncazulncarenuedefinitde
utilizatorniciunconstructor,compilatorulgenereazunul.Odatdefinitunconstructor,
compilatorulnumaigenereazconstructorulimplicit,astfelcapelareaClasaObj=
newClasa()vadaeroaredacndefiniiaclaseinuseaflniciunconstructorpublic
Clasa(){...}
Constructoriisuntutilipentruageneravaloriimplicitepentrucmpurileconinute
nobiectulnoucreat.

Caracteristicileconstructorilor:
suntmetodecareseapeleazoridecteoriunobiectestecreat;
auacelainumecacelalclasei;
nuautipdereturn,nureturneaznimic,nimicmcarvoid;
potfisuprancrcatelafelcaoricealtmetodaclasei;
potfideclaraistaticpentruiniializareamembrilorstaticiaiclaselor;
deregulsedeclarpublicpentruaputeafiapelaidinafaraclasei.Sepot
declaraiprivate,maialescndaceaclasconinemembristatici.naceastsituaie
esteinutilpermitereacreriideinstanealeclasei(obiecte).
Constructoruldecopiere
Dacsedoretecreareaunuiobiectcaocopiefidelaaltuiobiect.
usingSystem;
publicclassClasa
{ privateinta;
publicClasa(inta)
{this.a=a;}
publicClasa(ClasaOb){this.a=Ob.a; }//constructoruldecopiere
publicintGetA(){
returnthis.a;}
}
publicclassProgram
{
publicstaticvoidMain(string[]args)
{
ClasaObj1=newClasa(10);//seapeleazaClasa(int)
ClasaObj2=newClasa(Obj1);//seapeleazaClasa(Clasa)
Console.WriteLine("Obj2.a={0}",Obj2.GetA());
}
}
Parametrulconstructoruluidecopiereestedetipulclaseiiarargumentuldeapel
esteobiectulObj1.

6.1.2.6

Cuvntulcheiethis

thisesteoreferinlaobiectulcurent.Toatemetodelenestaticealeclaseiposed
aceastreferiniauacceslaea.
Sefolosetepentrueliminareaambiguitilorcareaparntrenumeleparametrilor
formaliaiuneimetodeicoincidcunumelealtormembriaiclasei.
Semaifoloseteatuncicndmetodareturneazoreferinlaobiectulcurent.
usingSystem;
publicclassPersoana
{
privatestringNume;
privateintvarsta;
//cazulcandparam.formaliauaceleasinumecualecampurilor
publicPersoana(stringNume,intvarsta)
{ this.Nume=Nume;
this.varsta=varsta; }
//functiicarereturneazaunobiectdetipulclasei
publicPersoanaModificareVarsta(intvarsta)
{ this.varsta=varsta;
returnthis; }
publicvoidAfiseaza()
{Console.WriteLine(Nume+""+varsta);}
}
publicclassProgram
{
publicstaticvoidMain(string[]args)
{ PersoanaPers=newPersoana("Vasile",25);
Pers.Afiseaza();
Pers.ModificareVarsta(26);
Pers.Afiseaza();
}
}
Dacconstructorularfifost:
publicPersoana(stringNume,intvarsta)
{ Nume=Nume;
varsta=varsta;
}//nuarfifostaccesatevariabileleNumeivarsta
declaratemaisuscidoarsefaceoatribuireinutilavalorilorparametrilorformalicu
aceleaivalorialeparametrilorformali.

6.1.2.7

DESTRUCTORUL

Destructorulclaseiesteometodspecialcaredistrugeinstaneleclaselor.Oclas
poateaveaosingurmetoddestructor.
classClasa
{
~Clasa()
{
//eliberarearesurselorgestionatedeobiect
}
}

Destructorulsedefinetecunumeleclaseiprecedatde~,nuaretipinu
returneazniciuntip.
DeobiceinuenevoieimplementareadestructoruluideoareceC#
implementeazungarbagecollectordestuldeperformant.Sevautiliza
destructorulmaialesatuncicndobiectelegestioneazresursecarenusunt
controlatede.NetFramework.
DestructoriiNUseapeleazniciodat,eiseinvocautomat.
DestructoriinusepotfolosinstructuriiNUpotfisuprancrcai.
6.1.2.8
MEMBRIISTATICIAICLASELOR
Metodeleicmpurilenestatice,pecareleamutilizatpanaacum,nu
puteaufifolositenlipsaunuiobiectdetipulclasei.Metodeleicmpurile
staticeaucomportamentulunorfuncii/variabileglobalecarensnusunt
vizibiledectninteriorulclasei.Variabileledeclaratestaticesealocn
memorieipotfifolositechiardacnusadefinitniciunobiect.
usingSystem;
publicclassProgram
{
//exemplumembristatici
staticinta=10;
staticvoidMetoda1(){}
//membrinestatici
intb=20;
voidMetoda2(){}

publicstaticvoidMain(string[]args)
{
//membriistaticiapartinclasei
a=100;
//corect
Metoda1();
//corect
Program.a=200; //corectaccesare
Program.Metoda1();//numeleclasei
//membriinestaticiapartinobiectelor
//b=70;
//gresit
//Metoda2(); //gresit
ProgramPr=newProgram();
Pr.b=70;
//corect
Pr.Metoda2();
//corect
}
}
Observaii:
1)C#admiteiniializareadatelormembrelamomentuldeclarriilor,ex.:
publicClasa{inta=10;}
2)Laaccesareamembrilorstaticidinaaraclaseitrebuiessefoloseasc
sintaxa:NumeClasa.MembruStatic
classClasa
{ publicstaticstrings=''Gigel'';
publicstaticvoidMetoda(){} }
classProgram
{
staticvoidMain(string[]args)
{
Clasa.s=''Viorel'';
Clasa.Metoda();
//s=''Viorel'';
//gresit
//Metoda();
//gresit
}
}

Variabileleimetodelestaticesealocosingurdat,coninutuluneivariabile
staticevafiacelaidelaunobiectlaaltuldeclaratduptipulclaseicareconineacea
variabil.

6.1.2.9

CONSTANTE

Seutilizeazpentruapstravaloriconstantepetottimpulexecuieunuiprogram.
Constante:
constantelocale;
constantemembrealeclasei.
Constantele,fielocalefiemembre,seintroduccuajutorulcuvntuluicheieconst.
Constantelelocalesedeclarncorpulmetodelorisuntvizibiledoarncorpul
acestora:
Constantelemembresecoportcaivalorilestatice,suntvizibilenfiecare
instan(obiect)alclaseiisuntdisponibilechiarinlipsaobiectelorclasei.
usingSystem;
publicclassClasa
{
//EXEMPLUCONSTANTAMEMBRA
publicconstintCM=70;
publicvoidMetoda(refinta)
{
//EXEMPLUCONSTANTALOCALA
constintCL=10;//initializareaeobligatorie
//CL++;//constantelenusepotmodifica
a=CL;
}
}
publicclassProgram
{
publicstaticvoidMain(string[]args)
{
Console.WriteLine(Clasa.CM);
}
}

6.1.2.10
PROPRIETI
Proprietilefaciliteazaccesulladateleprivatealeobiectelor.Eleimplementeaz
nitemetodespecialedenumiteaccesaori.
usingSystem;
classPersoana
{ privatestringnume;
privateintvarsta;
publicPersoana(stringnume,intvarsta)
{ this.nume=nume;
this.varsta=varsta; }
publicstringNume
{
get
{returnnume;}
set
{nume=value;}
}
publicintVarsta
{
get
{returnvarsta;}
set
{varsta=value;}
}
}
publicclassProgram
{
publicstaticvoidMain(string[]args)
{
PersoanaPers=newPersoana("Gigel",23);
Console.WriteLine(Pers.Nume+""+Pers.Varsta);//get
Pers.Nume="Viorel";
//set
Pers.Varsta=24;
//set
Console.WriteLine(Pers.Nume+""+Pers.Varsta);//get
}
}
Proprietilesuntfolositepentru
returnareasau/isetareavalorilorcmpurilordinclas.Toateproprietileautip.
Prototipulproprietiiesteformatdintipulreturnatdectreproprietateinumele

proprietii.Tipulproprietiiestetipulcmpuluipecarelgestioneaz.
Accesoriigetisetauurmtoarelecaracteristici:
get:
nuareparametrii;
areuntipdereturndeacelaitipcualproprietii.
set:
areunsingurparametruimplicit,value,deacelaitipcuproprietatea.value
reinevaloareacmpuluigestionatdeproprietate
aretipuldereturnvoid
Proprietistatice
Sedeclarcustaticiseutilizeazpentruaccesareacmpurilorstatice.
Proprietilestaticenupotaccesaalimembriaiclaseidectpeceistaticiisunt
independentedeexistenainstanelorclasei.Seacceseazprinnumeleclaseilafelca
membriistatici.
usingSystem;
classClasa
{
privatestatica;
publicstaticintA
{
get{returnnr;}
set
{
if(value<1000) a=value;
else a=1000;
}
}
}
publicclassProgram
{ publicstaticvoidMain(string[]args)
{
Clasa.A=100;
//set
System.ConsoleWrite(Clasa.A);
//get
}
}
Dupcumsepoateobservanacestexemplu,accesorulsetsuportdeclaraiiifn
componenasa.
Seobinuietecanumeleproprietiisfieasemntorcucelalcmpuluisolicitat
darcuprimalitermajusculpentrucasursasfiemaiuordecitit.

Proprietiimplementateautomat
usingSystem;
classClasa
{ publicintVal //proprietate
{
get;set; }
}
publicclassProgram
{ publicstaticvoidMain(string[]args)
{ ClasaObj=newClasa();
Obj.Val=123;
//set
Console.WriteLine(Obj.Val); //get
}
}
Proprietileautomatenuseasociazniciunuicmpalclaseiiarcompilatorul
alocmemoriepentruvalorilefurnizatenfunciedetipulproprietii.Accesoriiseti
getnuaucorpitrebuiesfieambiispecificai.
Indexatori
Permitinstaneloruneiclasesaualeuneistructurisfieindexatelafelca
elementeleunuitablou.Deiseaseamncuproprietile,diferprin:indexatorul
poateaccesamaimulimembriiaiclasei,numeleindexatoruluiestentotdeaunathisi
estentotdeaunaunmembrualinstaneiidecinupoatefideclaratstatic.
usingSystem;
classClasa
{ privateint[]v;
privateintn;
privateconstintMAX=1000;
publicClasa(intdim){n=dim;v=newint[n];}
publicintthis[intindex]//Indexator
{
get
{
if(index<0)
returnv[0];
elseif(index>MAX)returnv[MAX];
elsereturnv[index];
}
set
{
if(index<0)v[0]=value;
elseif(index>MAX)v[MAX]=value;
elsev[index]=value;
}
}
}

publicclassProgram
{
publicstaticvoidMain(string[]args)
{
ClasaObj=newClasa(123);
for(inti=0;i<10;i++)
Obj[i]=i;
//set
Obj[1]=111;
for(inti=0;i<10;i++)
Console.WriteLine("Obj["+i+"]="+Obj[i]);//get
Console.Read();
}
}
6.1.2.11
Conversiintretipuri
doublea=11,5;
intb=15;
doublec=b;
//conversieimplicit
intd=(int)a;
//conversieexplicit,dvafiegalcu11,sepierdeparteadup
virgul
usingSystem;
classClasa
{
privateintv;
publicClasa(intv)//constructor
{this.v=v;}
//OperatordeconversieexplicitadelaintlaClasa
publicstaticexplicitoperatorClasa(intv)
{returnnewClasa(v);}
//operatordeconvwersieexplicitadelaBancnotalaint
publicstaticexplicitoperatorint(ClasaObj)
{returnObj.v;}
}
publicclassProgram
{ publicstaticvoidMain(string[]args)
{
intval=100;
ClasaObj=(Clasa)val;
//conversieexplicita
Console.WriteLine((int)Obj); //conversieexplicita
}
}

6.1.2.12

CLASEINTERIOARE(innerclasssau
nestedclass)

Definiiauneiclaseinterioaresegsetenaltclas.
Obs:
1) Pentruainstaniaunobiectdetipulclaseiinterioare,nuestenevoiedeunobiect
detipulclaseiexterioare.
2) Metodeleclaseiinterioarepotaccesatoimembriiclaseicareoconine,prin
intermediuloperatorului'.'.
usingSystem;
classCExterior//clasacontainer
{
privateintx;
publicCExterior(intx)
{this.x=x;}
publicclassCInterior //clasainterioara
{
publicvoidMetodaCInt()
{Console.WriteLine("Apelulmetodeiclaseiinterioare");}
publicvoidAccesMemClsExt(CExteriorObj)
{
//accesammembriiclaseiCExteriorprinorperatorul'.'
System.Console.WriteLine(Obj.x);
}
}
}
publicclassProgram
{
publicstaticvoidMain(string[]args)
{
//creamunobiectdetipulclaseiinterioare
CExterior.CInteriorObj1=newCExterior.CInterior();
Obj1.MetodaCInt();
//creamunobiectdetipulclaseiexterioare
CExteriorObj2=newCExterior(123);
Obj1.AccesMemClsExt(Obj2);//vaafisa123
}
}

6.1.2.13
CONINEREA
Coninereasaucompoziiareprezintfaptulcunulsaumaimulteobiectedetip
classuntconinutendefiniiaalteiclase.
usingSystem;
classClasa1
{ privateinta;
publicClasa1(inta){this.a=a;}
}
classClasa2
{ privateClasa1Obj;
privateintb;
publicClasa2(intb,Clasa1Obj)
{this.b=b; this.Obj=Obj;}
}
publicclassProgram
{ publicstaticvoidMain(string[]args)
{ Clasa1ObjC1=newClasa1(10);
Clasa2ObjC2=newClasa2(123,ObjC1);
}
}
6.1.2.14
CLASEPARIALE
Definiiileclaselor,structuriloriinterfeelorpoatefimpritnmaimultefiiere
surssauoclaspoatefifragmentatninteriorulaceluiaifiier.Sevafolosicuvntul
cheieparialpentruafaceacestlucru:
partialclassClasa1
{ publicvoidMetoda1(){System.Console.WriteLine(''Metoda1'');}}
partialclassClasa1
{ publicvoidMetoda2(){System.Console.WriteLine(''Metoda2'');}}
publicclassProgram
{ publicstaticvoidMain(string[]args)
{ Clasa1Obj=newClasa1()
Obj.Metoda1();
Obj.Metoda2();
}
}
6.1.2.15
CLASESIGILATE
Cuvntulcheiesealedplasatnainteadefiniriiuneiclaseimplicoprireamotenirii
aceleiclasedectrealteclase.
sealedpublicclassClasa1{/*......*/}
classClasa2:Clasa1{/*......*/}//vageneraeroare

6.1.2.16
SUPRANCRCAREAOPERATORILOR
C#permiteredefinireaunoroperatoriastfelsnctacetiassecomportediferit
aplicaiasupraclaselorfadeceeacefacnmoddefault.
Pentrusuprancrcareaoperatorilorsevorfolosimetodestatice.Sintaxaeste
urmtoarea:
publicstaticTipoperatorop(Tip1operand1,Tip2operand2)
{/*........*/}//operatorbinar
publicstaticTipoperatorop(Tip1operand)
{/*........*/}//operatorunar
Pentruoperatoriunari,operandultrebuiesfiedeacelaitipcuclasapentrucare
suprancrcmoperatorul.
usingSystem;
publicclassFractie
{ privateintnumarator,numitor;
privatestaticintCMMDC(inta,intb)
{ if(b==0)returna;
returnCMMDC(b,a%b);
}
publicFractie(intnumarator,intnumitor)
{ intdiv=CMMDC(numarator,numitor);
numarator/=div;numitor/=div;
this.numarator=numarator;
this.numitor=numitor;
}
publicstaticFractieoperator+(Fractief1,Fractief2)
{ intA=f1.numarator*f2.numitor+f2.numarator*f1.numitor;
intB=f1.numitor*f2.numitor;
intcmmdc=CMMDC(A,B);
A/=cmmdc;
B/=cmmdc;
returnnewFractie(A,B);
}
publicstaticbooloperator==(Fractief1,Fractief2)
{ if(f1.numitor==f2.numitor&&f1.numarator==f2.numarator)
returntrue;
returnfalse; }
publicstaticbooloperator!=(Fractief1,Fractief2)
{return!(f1==f2);}
publicoverridestringToString()
{ Strings=numarator.ToString()+"/"+numitor.ToString();
returns; }
}

publicclassProgram
{
publicstaticvoidMain(string[]args)
{
FractieA=newFractie(3,4);
Console.WriteLine("A={0}",A.ToString());
FractieB=newFractie(2,4);
Console.WriteLine("B={0}",B.ToString());
FractieC=A+B;//operatorul+suprascris
Console.WriteLine("C=A+B={0}",C.ToString());
FractieD=newFractie(2,4);
if(D==B)Console.WriteLine("D==B=={0}",D);
if(A!=B)Console.WriteLine(A+"!="+B);
A+=B;
Console.WriteLine("A="+A);
}
}
OBServaii:
Operatoruldeatribuire=nusesuprancarc.Estefurnizatnmodimplicitde
ctrecompilator.
Operatoriiunariauunparametru,iarceibinaridoiparametri,nambelecazuri,
celpuinunuldintreoperanzitrebuiesfiedetipulclaseisaualstructurii.
Operatoriiunariauunsingurparametru.
C#pretindecansituaiancaresuprancrcam==atuncitrebuies
suprancrcmi!=.Similar,operatorii<i>trebuiesuprancrcainperechi,lafeli
<=cu>=.
Dacsesuprancarcoperatorul+,atunciC#sintetizeazautomati+=.Lafel
vafaceipentru*cu*=.
MetodaToString
ToString()esteometodaclaseiobject,clasadebazatuturorcelorlalteclaseiar
roluleiestedeareturnaoreprezentareaobiectuluiclaseintrunobiectdetipulstring.
nexempluldemaisus,aceastmetodafostredefinit.
Operatoricarepotfiredefinii:
operatoriunari:
+,,!,~,++,,true,false
operatoribinari:
+,,*,/,%,&,|,^,>>,<<

Suprancrcareaoperatorilorunari
usingSystem;
publicclassIntreg
{
privateintn;
publicIntreg(inti){n=i;}
publicstaticIntregoperator++(Intregx)
{returnnewIntreg(++x.n);}
publicstaticIntregoperator(Intregx)
{returnnewIntreg(x.n);}
publicoverridestringToString()
{Strings=string.Format("{0}",n);
returns;}
}
publicclassProgram
{
publicstaticvoidMain(string[]args)
{
Intregx=newIntreg(10);
x++; //Incrementare
Console.WriteLine(x+""+x);
}
}
AlteOBServaiireferitoarelasuprascriereaoperatorilor:
NUsepotdefinialioperatori,sepotredefinidoaroperatoriipredefiniin
limbaj.
Nusepoateschimbasintaxaunuioperator.
Nusepoateredefinimoduldelucrualunuioperatorcutipuripredefinite.
Nusepoateschimbaordineaefecturiioperaiilor(precendena,asociativitatea).

6.1.2.17
INTERFEE
Ointerfaesteuntipreferincaredescrieunsetdemetodedarnule
implementeaz,practicesteoclascareconinedoarantetedemetode.Interfeelese
definesccucuvntulcheieinterface.
modificatorinterfaceNumeInterfat
{/*......*/}
Modificator:public,private,protected,internatl,protectedinternal.
Oclassauostructurpoateimplementaunasaumaimulteinterfee.
SeobinuietecanumeleinterfeeisnceapcuI
usingSystem;
publicinterfaceIinterfata
{
voidMetoda(strings);
}
publicclassClasa:Iinterfata
{ privatestrings;
publicClasa(strings){this.s=s;}
publicvoidMetoda(stringa)
{Console.WriteLine(s+a);}
}
publicclassProgram
{ publicstaticvoidMain(string[]args)
{ ClasaObj=newClasa("Anaare");
Obj.Metoda("mere"); }
}
$gmcsp1.cs
$winep1.exe
Anaaremere
OBServaii:
InterfeeleNUseinstaniaznobiecte.
InterfeeleNUconincmpuricidoarantetedemetode,proprietii
evenimentedeasemeneaNUconinimplementrialemetodelor.
Claseleistructurilepotmoteni(implementa)unasaumaimulteinterfee.
Ointerfapoatesmoteneasclarnduleioaltinterfa.

6.1.2.18

MOTENIREA

Esteunconceptfoarteimportantnprogramareaorientatobiect.Permitedefinirea
uneiclasecaresincorporeze(smoteneasc)cmpurileimetodeleuneialte
clase(clasadebaz).
Motenireaimplementeazceeaceamnuminlumeaconcretspecializarea,
porninddelaoclasabstractsaugeneral,cumaipuinecmpuriimetode,obinem
oentitatemaispecializat.
Moddeimplementare:
classClasaBaza
{/*......*/}
classClasaDerivata:ClasaBaza
{/*......*/}
OBServaii:
nC#toateclaselesuntderivatedinclasaobject.Clasaobjectslabaza
ierarhieiclaselor.
C#NUadmitemotenireamultipl,classA:B,C,D{....}//Erroare
Dintroclassepoatederivaaltclasiardinaceastaaltclas,niruireade
derivripoatefiorictdemare.
Metodeleuneiclasepotaccesatoimembriifieprivaifieprotejaifiepubliciai
claseidincarefacparte.
Metodeleclaseiderivatepotaccesadoarcmpurileimetodeleprotejatei
publicealeclaseidebaz,elenupotaccesacmpurileprivatealeclaseidebaz.
Dinexteriorulclaselorattprivatctiderivatnupotfiaccesatedect
metodeleicmpurilepublicealeclaseidebazctialeclaseiderivate,membrii
protejaiaiclaseidebaznupotfiaccesaidinexteriorulclaseiderivate.
Membriiuneiclasemarcaicumodificatorulinternalsuntvizibili(accesibili)
pentrutoateclaseledinacelaifiiersaudinacelasiassembly.
Membriiuneiclaseprotectedinternalsuntvizibilituturorcareomotenescin
plus,tuturorclaselordinacelaiassembly.
usingSystem;
classMasina
{ privatestringcarburant;
protectedintkilometraj;
publicstringCarburant
{ set{carburant=value;}
get{returncarburant;}
}
publicvoidPornire()
{Console.WriteLine("Masinaporneste");}
}

classDacia:Masina
{
privatestringmodel;
publicstringModel
{
set{model=value;}
get{returnmodel;}
}
publicvoidMentenanta()
{ //doarmembriiprotejatisiceipubliciaiclaseidebaza
//potfiaccesatidinmetodeleclaseiderivate
//carburant="benzina";//ERRoarecmpulesteprivat
kilometraj=1000;
//corectcampulesteprotejat
Pornire();
//corectmetodaesteprotejata
Console.WriteLine("Masinaesteinmentenanta");
}
}
publicclassProgram
{
publicstaticvoidMain(string[]args)
{
MasinaObj1=newDacia();
//Obj1.carburant="benzina";//ERRoarecampprivat
//Obj1.kilometraj=1000;
//Erroarecampprotejat
Obj1.Carburant="benzina"; //Corectproprietatepublica
//Obj1.Pornire();
//Eroaremetodaprotejata
/*TotimembriiclaseiMasinasuntmembriaiclaseiDacia.
Membriiprivateiprotectednupotfiaccesatidinexteriorul
claseiDacia*/
DaciaMasinaMea=newDacia();
//MasinaMea.carburant="benzina"; //Eroarecampprivate
//MasinaMea.kilometraj=1000;
//Eroarecampprotected
MasinaMea.Carburant="benzina";
//MasinaMea.Pornire();//Eroaremetodaprotejata
//MasinaMea.model="Break1400"; //Eroarecampprivat
MasinaMea.Model="Break1400"; //Corectmetodapublica
MasinaMea.Pornire(); //Corectmetodapublica
}
}

Constructoriiclaselorderivate
ConstructoriiclaseidebazNUsemotenesc.Constructorulclaseiderivate
apeleaznsconstructorulbazeipentruaconstruiporiuneadeobiectspecificbazei.
usingSystem;
classCBaza
{
publicCBaza()
{Console.WriteLine("Constructorulclaseidebaza");}
}
classCDerivata:CBaza
{
publicCDerivata()
{Console.WriteLine("Constructorulclaseiderivate");}
}
publicclassProgram
{
publicstaticvoidMain(string[]args)
{
CDerivataObj;
Obj=newCDerivata();//apelulconstructorului
//claseiderivate
}
}
$gmcsp1.cs
$winep1.exe

ConstructorulCDerivata()executiconstructorulclaseidebaznaintea
executriipropriuluicod.

C#permiteiapelulexplicitalconstructoruluiclaseidebaz:
publicCDerivata():CBaza(),Dacconstructorulbazeiareparametri,atunciapelul
implicitNUmaipoatefifolosit.Constructorulderivattrebuiesinvocenmodexplicit
constructorulbazei.
usingSystem;
classCBaza
{ privateintx;
publicCBaza(inty)
{ x=y;
Console.WriteLine("Constructorulclaseidebaza"); }
}
classCDerivata:CBaza
{ privatecharc;
publicCDerivata(charch,inta):base(a)
{ c=ch;
Console.WriteLine("Constructorulclaseiderivate");}
}
publicclassProgram
{
publicstaticvoidMain(string[]args)
{
CDerivataObj=newCDerivata('A',123);
}
}
Constructorulclaseiderivatetrebuiesaibsuficieniparametripentruainiializa
cmpurileclaseidebaz.
Atuncicndseinvocconstructorulclaseiderivate,seefectueazurmtoarele
operaii:
1) Iniializareamembrilordetipinstanaclaseiderivate.
2) Apelulconstructoruluiclaseidebaz.
3) Executareacorpuluiconstructoruluiclaseiderivate.

Membriiascuni
Atuncicndnambeleclase,attnceadebazctinceaderivatexistcteo
variabilcuacelainumesaucteometodcuacelainume,atuncinumelemembrilor
dinclasadebazsuntascunsemetodelorclaseiderivate.Pentruaccesareamebrilor
ascuniaiclaseidebazseutilizeaznewplasatnfaamembrilorbazeiicuvntul
cheiebazepentruaccesareamembrilorascuni.
usingSystem;
classCBaza
{ publicintcamp=10;
publicvoidMetoda()
{ Console.WriteLine("Metodaclaseidebaza"); }
}
classCDerivata:CBaza
{ newpublicintcamp=20;
newpublicvoidMetoda()
{ base.Metoda();
Console.WriteLine("Metodaclaseiderivate,CBaza.camp={0}",base.camp);}
}
publicclassProgram
{
publicstaticvoidMain(string[]args)
{
CDerivataObj=newCDerivata();
Obj.Metoda();
}
}

6.1.2.19
POLIMORFISM
Reprezintcaracteristicauneientitideasecomportanmoduridiferitenfuncie
decontext.ncazulprogramriiorientateobiectreprezintcaracteristicauneivariabile
referindeaputeareferiobiectedetipuridiferite.C#acceptpolimorfismulbazatpe
motenire.Permiteinvocareanruntimeametodelordinclasaderivatcuajutorulunei
referinelaclasadebaz.
Conversiareferinelor
usingSystem;
classCBaza
{ publicvoidMetoda()
{Console.WriteLine("MetodadinClasadeBaza");}
}
classCDerivata:CBaza
{ publicvoidMetoda()//saunewpublicvoidMetoda()
{Console.WriteLine("MetodadinClasaDerivata");}
}
publicclassProgram
{
publicstaticvoidMain(string[]args)
{
CDerivataObj=newCDerivata();
Obj.Metoda();
//upCastlaclasadebaza
CBazaObj2=(CBaza)Obj;
Obj2.Metoda();
}
}

Referinalaparteadebazaobiectuluinupoateaccesarestulobiectuluiclasei
derivate,deoareceaccesulsefacepritroreferinObj2laclasadebaz.PrinObj2se
vaputeaaccesadoarmetodaMetoda()dinclasadebaz.
Conversiauneireferineaunuiobiectderivatspreoreferinlaclasadebazse
numeteupcast.

Metodevirtuale
Pentrucaoreferinlaunobiectalclaseidebazspoataccesamembriai
obiectelorderivate,pentruaseputeaobinepolimorfismbazatpemotenire,avem
nevoiede:
clasadebazsfiedeclaratcuvirtual.
clasaderivatsrederineascaacelmembru,cuexactaceeaisemnturi
acelaitipdereturn,adugndcuvntulcheieoverride,plasatnainteatipuluide
return.
usingSystem;
classCBaza
{ virtualpublicvoidMetoda()
{Console.WriteLine("MetodadinClasadeBaza");}
}
classCDerivata:CBaza
{ overridepublicvoidMetoda()//saunewpublicvoidMetoda()
{Console.WriteLine("MetodadinClasaDerivata");}
}
publicclassProgram
{
publicstaticvoidMain(string[]args)
{
CDerivataObj=newCDerivata();
Obj.Metoda();
//CDerivata.Metoda()
//Castlaclasadebaza
CBazaObj2=newCBaza();
Obj2.Metoda();
//CBaza.Metoda()
Obj2=newCDerivata();
Obj2.Metoda();
//CDerivata.Metoda();
}
}

PrimulapelObj2.Metoda()invocmetodadinclasadebaz,apoideoarece
referinaObj2estencontinuaredetipulCBazadartipulobiectuluireferitdevine
CDerivataprinObj2=CDerivata()//seinvocconstructorulclaseiderivatecare
schimbreferinaluiObj2,Obj2.Metoda()vainvocaMetoda()dinclasaderivat.

Modificatorulsealed
classC1
{ protectedvirtualvoidM1(){}
protectedvirtualvoidM2(){} }
classC2:C1
{ sealedprotectedoverridevoidM1(){}
protectedoverridevoidM2(){} }
classC3:C2
{ protectedoverridevoidM1(){} //Erroare
protectedoverridevoidM2(){}/*Corect*/
}
Aplicatuneiclase,sealedmpiedicalteclasesmoteneascrespectivaclas,
aplicatuneimetodedintroclassauuneiproprieticareredefineteometodsauo
proprietateaclaseidebaz,sepermitemotenirearespectiveiclasecarearemembru
sealeddarmetodasauproprietateasealednumaipoatefirederinitnclaselederivate.

7.

DIVERSE

7.1
DELEGRI
usingSystem;
classClasa
{ publicvoidM1(strings) {Console.WriteLine(s+"Clasa.M1()");}
publicstaticvoidM2(strings){Console.WriteLine(s+"Clasa.M2()");}}
delegatevoidDeleg(strings);
publicclassProgram
{ publicstaticvoidMain(string[]args)
{ DelegD; //declarmreferinadetipDeleg
ClasaObj=newClasa();
//atasammetodedelegariiD
D=Obj.M1; //D:M1()
D+=Clasa.M2;
//D:M1(),M2()
D+=Clasa.M2;
//D:M1(),M2(),M2()
//invocamdelegarea
D("Primainvocare");
D=Obj.M1;//D:M2()
D("Adouainvocare");
}
}
Delegareaesteuntipreferincarencapsuleazolistodonatdemetodecu
aceeaisemnturiacelaitipdereturn.Odatapelat,delegareaapeleaztoate
metodelepecareleconineitrimitectreacesteaparametriiprimii.ncazuldemai
susdelegareaDelegconineolistdemetodecareprimesccteunirdecaractere,
M1()eometodnestaticideciarenevoiedeunobiectpentruafiapelat,M2()este
ometodstaticipoatefiapelatnlipsaunuiobiect.

7.2
EVENIMENTE
Evenimentelesuntfoarteimportantenaplicaiilecuinterfeegrafice,deoarece
sistemeledeoperareactualenupermitprogramelorsaibaccesuldirectasupra
componentelorcalculatorului,comunicareantredispozitiveledeintrareieirei
programesefaceprinintermediulevenimentelor.Sistemuldeoperareidentific
aciunileprimitedeladispozitiveledeintrareieireitrimitesemnalectreprogramele
dorite.
EvenimentelenC#permituneiclasesauobiectsnotificesausntiinezealte
clasesauobiecteccevasantmplat.
Unevenimentesteunmembrupublicalclaseicarepublicevenimentul.Cndare
locoaciune,membrulseactiveazinvocndtoatemetodelecareausubscris
evenimentului.
Pentruasecaptaiexecutacodpentruevenimentetrebuie:
1) Declarareaunuitipdelegat.Poateavealornclasacaredeclarevenimentulsau
nafaraclasei.Evenimenteleihandlereledeevenimentetrebuiesaibosemntur
iuntipdereturnidentice.
2) Declarareaevenimentului.Evenimentulsedeclarcamembrupublicnclasa
publishercuajutorulcuvntuluicheieevent.Eldepoziteaziinvoclistadehandlere.
3) Sevascriecodcaredeclaneazevenimentul.Codulsescrienclasapublisher.
Apelareaevenimentuluiducelainvocareatuturormetodelorhandlernregistratecu
acesteveniment.
4) Declareventhandlere.Sedeclarnclaselesubscriberisuntmetode(event
handlere)careseexecutcndevenimentulsedeclaneaz.
5) nregistreazhandlerele.Presupuneconectareaevenimentuluilametodele
handler.Codulsescrienclaselesubscribersaunalteclasedarnunpublisher.
usingSystem;
publicdelegatevoidTimer();//declararetimpdelegate
publicclassCPublisher
{
publiceventTimereveniment;//declarareeveniment
publicvoidDeclansare()
{
while(true)
{ //programulisiinceteazaexecutia3sec
System.Threading.Thread.Sleep(3000);
if(eveniment!=null)
eveniment();
}
}
}

classClasa1
{
publicvoidHandlerC1()
{Console.WriteLine("ObiectultipClasa1notificatla{}",DateTime.Now);}
}
classClasa2
{
publicvoidHandlerC2()
{Console.WriteLine("ObiectultipClasa2notificatla{}",DateTime.Now);}
}
classProgram
{
publicstaticvoidMain()
{
CPublisherObj=newCPublisher();
Clasa1Obj1=newClasa1();
Clasa2Obj2=newClasa2();
//obiecteleObj1siObj2vorfinotificateladeclansareaevenim
Obj.eveniment+=Obj1.HandlerC1;//seinregistreaza
Obj.eveniment+=Obj2.HandlerC2;//metodelehandler
Obj.Declansare();//apelulmetodeideclansatordeevenimente
}
}
OBServaii:
nregistrareametodelorataateunuievenimentsefacecuoperatorul+=iar
ndeprtarealordinlistadeinvocaresefacecuoperatorul=.

Folosireatipuluidelegatepredefinitalplatformei.NETpentrutratarea
evenimentelor
usingSystem;
publicclassEvenimentulMeu:EventArgs
{ privateDateTimemomentul; //camp
publicDateTimeMomentul
{ set {momentul=value;}
get{returnthis.momentul;}
}
}
//decarareatipuluidelegatcuprototipulcerutde.Net
publicdelegatevoidTimp(objectsender,EvenimentulMeuev);
publicclassCPublisher
{
publiceventTimpeveniment; //declaramevenimentul
publicvoidDeclanseaza()
{
while(true)
{ //executiaprogramuluiseintrerupe3sec
System.Threading.Thread.Sleep(3000);
if(eveniment!=null)//inregistrammetode
{
EvenimentulMeuev=newEvenimentulMeu();
ev.Momentul=DateTime.Now;
//declanseazainvocareahandlerelor
eveniment(this,ev);
}
}
}
}
classC1
{ publicvoidHandlerC1(objectsender,EvenimentulMeue)
{Console.WriteLine("ObiectultipC1,notificatla{0}",e.Momentul);}
}
classC2
{ publicvoidHandlerC2(objectsender,EvenimentulMeue)
{Console.WriteLine("ObiectultipC2,notificatla{0}",e.Momentul);}
}

publicclassProgram
{
publicstaticvoidMain(string[]args)
{
CPublisherObj=newCPublisher();
C1Obj1=newC1();
C2Obj2=newC2();
Obj.eveniment+=Obj1.HandlerC1;
Obj.eveniment+=Obj2.HandlerC2;
Obj.Declanseaza();
}
}

ObiectulEventArgsnuconinenrealitatedateutileiestefolositatuncicndun
evenimentnutransmitedatedestareunuieventhandler.Dacsedoretetransmiterea
handlerelorinformaiisuplimentaredespreeveniment,sepoatecreaoclas,
EvenimentulMeu,caremenineacesteinformaii.Aceastclastrebuiesmoteneasc
clasaEventHandler.Trebuiedeclaratcuosemnturcompatibil.Net.Tipuldelegat
sevadeclara:publicdelegatevoidTimp(objectsender,EvenimentulMeuev);
senderesteoreferinlaobject,decipoatereferiobiectedeoricetip,inclusiv
CPublisher.napeluleveniment(this,ev);argumentelesunt:referinathislaobiectulde
tipCPublisherireferinaevlaunobiectdetipEvenimentulMeu.

7.3
CLASEIMETODEGENERICE<templateuri>
Templaturilesauabloanelepermitreutilizareacodului,nlocssescriecod
pentrumaimultemetodecareauacelainumedartipuridiferitepentruparametri(sse
suprancarcemetoda),sepoatescrieosingurdatcodpentrurespectivametod.
usingSystem;
publicclassStiva<T>
{ privateT[]a;
privateintn;
publicStiva(intmax) //constructor
{a=newT[max];}
publicvoidPush(Tval)
{a[n++]=val;}
publicTPop()
{returna[n];}
}
publicclassProgram
{ publicstaticvoidMain(string[]args)
{ //secreeazaostivatipint(T=int)
Stiva<int>Obj1=newStiva<int>(100);
Obj1.Push(2);
Obj1.Push(4);
Obj1.Push(6);
Console.WriteLine(Obj1.Pop()+""+Obj1.Pop()+""+Obj1.Pop());
//secreeazaostivadestring(T=string)
Stiva<string>Obj2=newStiva<string>(50);
Obj2.Push("Ionel");
Obj2.Push("Gigel");
Obj2.Push("Purcel");
Console.WriteLine(Obj2.Pop()+""+Obj2.Pop()+""+Obj2.Pop());
}
}
ClasaStiva<T>nuesteo
clasreal,esteunablon,template.Pebazaablonuluideclassevorgeneraclase
realepentrudiversetipuriparticularealeparametruluiT.

7.4
TRATAREAEXCEPIILOR
ntimpulexecutriiunuiprogrampotapreaerori,unfiiernupoatefideschis
pentrucnuexist,unirdecaracterenupoateficonvertitlauntipnumericpentruc
maiconineialtecaractere,nenumericeetc.nmodnormal,frmecanismede
tratareaexcepiilor,programulsevabloca,folosindmecanismedetratareaexcepiilor,
putemfacecaprogramulsicontinueexecuiaincazuldetectriiexcepiei.C#
oferunmecanismdetratareaexcepiilorbzatpecuvintelecheietry,catchifinally.
try
{/*codcareprindeexcepia*/}
catch
{/*codcaretrateazexcepia*/}
finally
{/*codcareseexecutduptrycatchindiferent
dacsearuncsaunuexcepii*/}
Exempludeexecepie,sevancercaaccesareaunuimembrunealocatalunui
vector.
usingSystem;
publicclassProgram
{
publicstaticvoidMain(string[]args)
{
int[]V={1,2,3,4};
try
{Console.WriteLine("V[4]={0}",V[4]);}
catch(Exceptione)
{Console.WriteLine("Exceptie!:\n"+e.ToString());}
finally
{Console.WriteLine("V[3]={0}",V[3]);}
}
}

8.

PROGRAMAREWINDOWS
INTERFEEGRAFICE

usingSystem;
usingSystem.Windows.Forms;
usingSystem.ComponentModel;
usingSystem.Drawing;
publicclassForm1:Form
{privateContainercontainer;
privateLabeleticheta;
privateSystem.Windows.Forms.Buttonbuton1;
privateButtonbuton2;

publicForm1()
{InitializeComponent();}
privatevoidInitializeComponent()
{
container=newContainer();
eticheta=newLabel();
buton1=newSystem.Windows.Forms.Button();
buton2=newButton();
//stabilireaproprietatilorcontroleruluieticheta
eticheta.Location=newPoint(10,30);
eticheta.Text="Apasaticebutondoriti";
eticheta.Size=newSize(10,10);
eticheta.AutoSize=true;
eticheta.Font=newFont("MicrosoftSansSerif",12,System.
Drawing.FontStyle.Bold);
eticheta.TabIndex=0;
eticheta.Anchor=AnchorStyles.None;
eticheta.TextAlign=ContentAlignment.MiddleCenter;
Controls.Add(eticheta); //adaugamcontroleruleticheta
//stabilireaproprietatilorcontroleruluibuton1
buton1.Location=newSystem.Drawing.Point(50,50);
buton1.Name="BUTON1";
buton1.Size=newSystem.Drawing.Size(75,23);
buton1.Text="OK";
this.buton1.Click+=newSystem.EventHandler(this.buton1_Click);
Controls.Add(buton1);//adaugamcontrolerulbuton1

//stabilireaproprietatilorcontroleruluibuton2
buton2.Location=newPoint(50,80);
buton2.Name="BUTON2";
buton2.Size=newSize(75,23);
buton2.Text="but2";
buton2.Click+=buton2_Click;
Controls.Add(buton2);//adaugamcontrolerulbuton2
Text="PrimulFormular";
//textulcareapareinbaradesus
}
privatevoidbuton1_Click(objectsender,EventArgse)
{ Controlc=(Control)sender;
MessageBox.Show("Atifacutclickpe"+c.Name+"cueticheta"+c.Text);}
privatevoidbuton2_Click(objectsender,EventArgse)
{ buton1.PerformClick();
//creamunobiectdetipulDTP
DateTimePickerdtp=newDateTimePicker();
//Pozitionamcontrolerul
dtp.Location=newPoint(90,50);
//adaugamcontrolerul
this.Controls.Add(dtp);
}
}
publicclassProgram
{
publicstaticvoidMain(string[]args)
{Application.Run(newForm1());}
}

$gmcsp1.csr:System.Windows.Forms.dllr:System.Drawing.dll
//>ccsp1.cs/r:System.Windows.Forms.dll/r:System.Drawing.dllptWindows
$winep1.exe

Compilareaprogramelorcuinterfagraficnecesitnecesitreferinelafiierele
dllSystem.Windows.Forms.dlliSystem.Drawing.dllataatenarhivsaupotfigsite
peinternet.
Deasemeneatrebuieintrodusenamespaceurile:
System.Windows.Formsconineclasadebazpentruformularecticlaselede
bazpentrucontroalere:butoane,textboxuri,etichete....PrinpublicclassForm1:
Form,clasanoastrForm1moteneteclasadebazForm.Deasemenea,fiind
introdusnamespaceulSystem.Windows.Forms,unbutonsauoricealtcontrolerpoate
fidefinitprin
privateSystem.Windows.Forms.Buttonbuton1;//camembrualclasei
buton1=newSystem.Windows.Forms.Button();//inmetodaIntializeComponent()
sauprin:privateButtonbuton1;....buton1=newButton();
System.Drawingconinemetodereferitoarelapoziionareasisetareaproprietii
controalelor:Point(intx,inty)plaseazcoluldinstngasuspeformular,Size(int,
int)dimensiuneacontrolerului...
Toateformulareletrebuiesaibuncontainercarescuprindcontrolerele.eleste
definitprin:privateContainercontainer=newContainer();Dupcesetmproprieti
pentrucontrolere(butoane,etichete,...),adugmevenimentelacareelesfie
receptive,vatrebuisleadugmlacontainerprinControls.Add(buton1);
Contructorulclaseiformular,Form1()apeleazfunciaInitializeComponent()n
caresuntfcutetoatesetrileproprietilorcontroalelor.
Ataareaevenimentelorpentrucontroleresefaceprinhandlere.
Lumcazulbuton1,
1) cremometodncorpulclaseiForm1
privatevoidbuton1_Click(objectsender,EventArgse)
{/*codcareseexecutlaapsareabutonului1*/}
2)adugmhandleruldeevenimentlaproprietateaClickabutonului,
buton1.Click+=buton1_Click;
Putemgeneradinprogramevenimentuldeapsarealunuiprogram,metodacare
trateazapsareabutonului2,buton2_Click(objectsender,EventArgse)coninecod
caregenereazunogiectdetipulDTPcareafieazuncalendardarnacelaitimp
apeleazimetodaPerformClick()abutonului1(buton1.PerformClick())astfel
apsndbutonul2segenereaziaciunilecaresarpetrecelaapsareabutonului1
frcaacestasfifostapsatnrealitatedectrenoi.
AplicaiaestepornitlaapelulfuncieiMaincarelarnduleiapeleazmetoda
Application.Run(newForm1());

8.1

Butoane

System.Windows.Formsdefinetetreitipuridecontrolerecederivdin
ButtonBase:Button,CheckBoxiRadioBox.
8.1.2
Button
publicclassFormular:Form
{ //declarare
privateSystem.Windows.Forms.Buttonbuton;
publicFormular(){InitializeComponent();}
privatevoidInitializeComponent()
{
//setamproprietatile
buton=newButon();
buton.Font=newSystem.Drawing.Font(''MicrosoftSansSerif'',12F);
buton.ForeColor=System.Drawing.SystemColors.ControlText;
buton.Text=''Mesajulcarevafiscrisininteriorulbutonului'';
buton.Name=''buton'';//seteaznumelebutonului;
buton.Location=newSystem.Drawing.Point(100,100);/*poziacoltului
dinstngasusfatadecontuldinstngasusalformularului*/
buton.Size=newSystem.Drawing.Size(50,50);/*poziiacolduluidin
dreaptajosrelativfardebuton.Location*/
buton.BackColor=Color.Yellow; //setareaculoriidefundalalbutonului
buton.Image=newBitmap("Click.jpg");/*sepoateintroduceoimagine
pesuprafaabutonului*/
buton.TextAlign=System.Drawing.ContentAlignment.MiddleLeft;
buton.Click+=newSystem.EventHandler(buton_Click);/*adaugarea
evenimentuluilaapasareabutonului*/

Controls.Add(this.buton);//adaugareacontroleruluipeforma
}
privatevoidbuton_Click(objectsender,EventArgse)
{/*evenimenteceauloclaapasareabutonului*/}
privatevoidbuton_MouseEnter(objectsender,EventArgse)
{/*manifestaricareaparcandcursorulmouseuluiintradeasuprabutonului*/}
privatevoidbuton_MouseLeave(objectsender,EventArgse)
{/*manifestaricareaparcandcursorulmouseuliesedepesuprafatabutonului*/}

8.1.3
CheckBox,RadioBox,GrupBox
usingSystem;
usingSystem.Windows.Forms;
usingSystem.ComponentModel;
usingSystem.Drawing;
publicclassForm1:Form
{
GroupBoxgrupBox1,grupBox2,grupBox3;
RadioButtonrb1,rb2,rb3,rb4;
CheckBoxcb1,cb2;
Buttonbuton1,buton2;
publicForm1()
{
InitializeComponent();
}
privatevoidInitializeComponent()
{ grupBox1=newGroupBox();
grupBox2=newGroupBox();
grupBox3=newGroupBox();
rb1=newRadioButton();rb2=newRadioButton();
rb3=newRadioButton();rb4=newRadioButton();
cb1=newCheckBox();cb2=newCheckBox();
buton1=newButton();buton2=newButton();
//setamprorpietatilegrupBox1
grupBox1.Text="Excursii";
grupBox1.Font=newFont("Calibri",12);
grupBox1.ForeColor=Color.Red;
grupBox1.Location=newPoint(10,10);
grupBox1.Size=newSize(280,250);
//setamproprietatilegrupBox2
grupBox2.Text="Tara";grupBox2.ForeColor=Color.Black;
grupBox2.Location=newPoint(10,20);
grupBox2.Size=newSize(130,220);
grupBox2.BackColor=Color.Gray;
//setamproprietatilegrupBox3
grupBox3.Text="Transport";
grupBox3.BackColor=Color.White;
grupBox3.ForeColor=Color.Black;
grupBox3.Location=newPoint(140,20);
grupBox3.Size=newSize(130,100);

//setamproprietatilebutoanelorradio
rb1.Left=10;rb1.Top=20;rb1.Width=100;rb1.Height=25;
rb1.BackColor=Color.Green;rb1.ForeColor=Color.Black;
rb1.Text="Australia";rb1.Name="RB1";rb1.Font=newFont("Georgia",9);
rb1.CheckAlign=ContentAlignment.MiddleRight;
rb1.AutoEllipsis=true;/*rb1.Image=Image.FromFile(/*calecatre
imagine*/);*/
rb2.Left=10;rb2.Top=45;rb2.Text="Grecia";
rb3.Left=10;rb3.Top=70;rb3.Text="SUA";
rb4.Left=10;rb4.Top=95;rb4.Text="Cuba";
//setamproprietatilebutoanelorCheckBox
cb1.Location=newPoint(10,20);cb1.Width=100;cb1.Height=25;
cb1.BackColor=Color.Red;cb1.ForeColor=Color.Blue;
cb1.Text="Avion";cb1.Name="CB1";

cb1.TextAlign=ContentAlignment.MiddleCenter;
cb1.TextAlign=ContentAlignment.TopRight;cb1.Font=newFont("Georgia",9);
cb2.Location=newPoint(10,50);cb2.Width=80;cb2.Height=25;
cb2.Text="Balon";cb2.Font=newFont("Georgia",9);cb2.Width=80;
//setamproprietatilebutoanelorbuton1sibuton2
buton1.Text="Verifica";buton1.Location=newPoint(140,130);
buton2.Text="Iesire";buton2.Location=newPoint(140,170);
buton1.Size=newSize(100,40);buton2.Size=newSize(100,40);
buton1.Click+=newSystem.EventHandler(buton1_Click);
buton2.Click+=newSystem.EventHandler(buton2_Click);
//adaugamcontrolerelelagrupboxsigrupbox1laforma
grupBox1.Controls.Add(grupBox2);//grupBox2sigrupBox3sunt
grupBox1.Controls.Add(grupBox3);//plasateingrupBox1
grupBox2.Controls.Add(rb1);grupBox2.Controls.Add(rb2);
grupBox2.Controls.Add(rb3);grupBox2.Controls.Add(rb4);
grupBox3.Controls.Add(cb1);grupBox3.Controls.Add(cb2);
grupBox1.Controls.Add(buton1);grupBox1.Controls.Add(buton2);
Controls.Add(grupBox1);
Text="FormularcuRabioBox,CheckBox,GroupBox";
}
privatevoidbuton1_Click(objectsender,EventArgse)
{ stringmsg="vaplecain";
//verificacaredintrebutoaneleradioesteapasat
if(rb1.Checked)msg+=rb1.Text;
if(rb2.Checked)msg+=rb2.Text;
if(rb3.Checked)msg+=rb3.Text;

if(rb4.Checked)msg+=rb4.Text;
//verificastareabutoanelordevalidate
boolfistDest=false;
if(cb1.Checked)
{ msg+="cu"+cb1.Text;
fistDest=true;
}
if(cb2.Checked)
if(fistDest)msg+="sicu"+cb2.Text;
elsemsg+="cu"+cb2.Text;
MessageBox.Show(msg+"!");
//restabilestestareainitiala
cb1.Checked=false;cb2.Checked=false;
rb1.Checked=true;
}
privatevoidbuton2_Click(objectsender,EventArgse)
{Application.Exit();}

}
publicclassProgram
{ publicstaticvoidMain(string[]args)
{Application.Run(newForm1());}
}

ElementeleGroupBoxgrupeazcontroleredemaimultefeluri.Uncontrolerse
adauglaungrupboxprinControlerGrupBox.Controles.Add(buton1).Elementele
grupboxsepotdimensiona.
ElementeleRadioButtonreprezintbutoaneradio,numaiunsingurbutonradio
dintrungrupboxsaudepeunpanoupoatefiselectatlaunmomentdat.Dacun
radiobuton,rb1,esteselectat,atunciproprietateaCheckedasaestetrue,
rb1.Checked==true.
ElementeleCheckBoxsuntdeasemeneabutoanecuselectaredarmaimulte
butoanecheckboxplasatepeacelasigroupboxsaupeacelaipanoupotfisetaten
acelaitimp.Deasemenea,butoanelecheckboxauieleoproprietateCheckedcare
estetrueatuncicndrespectivulcontroleresteselectat.
Attbutoanelecheckboxctiradiobuxpotfisetatedinprogramfrcaelesfie
apsatedectreutilizatorsetndproprietateacontroler.Checked=true.
Maimulteproprietialecontrolerelorsepotgsipeinternet.

8.1.4
Label,LinkLabeliTextBox
usingSystem;
usingSystem.Windows.Forms;
usingSystem.ComponentModel;
usingSystem.Drawing;
usingSystem.IO;
publicclassForm1:Form
{
privateLabellabel;privateLinkLabellklabel;
privateButtonbuton;privateTextBoxtextbox;
publicForm1()
{
InitializeComponent();
}
privatevoidInitializeComponent()
{
label=newLabel();lklabel=newLinkLabel();
buton=newButton();textbox=newTextBox();
//setamproprietatipentrucontrolerullabel
label.Location=newPoint(10,10);label.Size=newSize(300,20);
label.Text="CescrietiinTextBoxvafisalvatin./FisierText.txt";
//setamproprietatipentrucontrolerullklabel
lklabel.Location=newPoint(10,30);lklabel.Size=newSize(300,20);
lklabel.LinkArea=newLinkArea(300,30);
lklabel.Text="http://padrecosmin.noip.info/";
lklabel.Click+=newSystem.EventHandler(lklabel_LinkClicked);
//setamproprietatipentrucontrolerultextbox
textbox.Multiline=true;textbox.Location=newPoint(10,60);
textbox.Size=newSize(250,170);textbox.ScrollBars=ScrollBars.Vertical;
textbox.AcceptsReturn=true;textbox.AcceptsTab=true;
textbox.WordWrap=true;textbox.Text="Introducetitextaici";
//setamproprietatilebutonului
buton.Location=newPoint(10,230);buton.Text="OK";
buton.Click+=buton_Click;
//adaugareacontrolerelor
Controls.Add(label);Controls.Add(lklabel);
Controls.Add(textbox);Controls.Add(buton);
Text="ProgramcuLabel,LinkLabelsiTextBox";
}

privatevoidlklabel_LinkClicked(objectsender,EventArgse)
{ //sechimbamculoarealinkuluidupaclick
lklabel.LinkVisited=true;
//schimbamtextul
lklabel.Text="Seviziteazahttp://padrecosmin.noip.info/";
//deschidemadresainbrowserulimplicit
System.Diagnostics.Process.Start("http://padrecosmin.noip.info/"); }
privatevoidbuton_Click(objectsender,EventArgse)
{File.WriteAllText("FisierText.txt",textbox.Text);}
}
publicclassProgram
{ publicstaticvoidMain(string[]args)
{Application.Run(newForm1());}

ControlereleetichetfacpartedinclasaLabel.Ceamaiimportatproprietatealoreste
controler.Text=''textulcareaparepeeticheta''.
ControlereleetichetlegturfacpartedinclasaLinkLabel.Auieledeasemeneao
proprietateTextdarconinioproprietateClick.Acesteiproprietiisepoatedaoreferin
ctreometodcarevafiacionatatuncicndapareevenimentuldeapsarealinkului
respectiv.Metodalklabel_LinkClicked(objectsender,EventArgse)conineliniadeprogram:
System.Diagnostics.Process.Start(''linkulURLspecificat'');aceastmetodpornete
browserulimplicittrimitnduiadreisaURLsolicitat.
MetodaSystem.Diagnostics.Process.Start(numeProgram,argumenteLinieComanda);
porneteprogramulsolicitattriminduiargumenteledeliniedecomandspecificate.

LaapsareabutonuluibutonsevaapelametodabutonClick(objectsender,
EventArgse)careconineliniadeprogramFile.WriteAllText("FisierText.txt",
textbox.Text);.ClasaFilececoninemetodastaticWriteAllText(fisier,sirCaractere)
seaflnnamespaceulSystem.IO;caretrebuieintrodusfolosindusing.
CtevadinmetodeleiproprietilecontrolerelorTextBox
textbox.Multiline=true,dactextboxulvaaveamaimultelinii
textbox.AcceptReturn=true;dacapsndEnterntruntextboxelseva
manifestatrecndcursoruldescrierepelinienouncadrultextboxului,=falsei
atunciseactiveazbutonulimplicitalformei.
textbox.Textreturneazsaumodifictextulncontrol
textbox.Copy()copiaztextulselectatnClipboard
textbox.Paste()lipetencotnrolconinutulClipboardului
textbox.Cut()muttextulselectatnClipboard
textbox.Clear()tergetextuldincontrol
textbox.Select()selecteazunintervaldetextncontrol

8.1.4
RicktextBox
nurmtorulprogramtextulcarevafiscrisnfiiervafiintrodusntrun
richtextboxscriereanfiiervaficondiionatdeintroducereauneiparolentrun
textboxmicualturatbutonului.
usingSystem;
usingSystem.Windows.Forms;
usingSystem.ComponentModel;
usingSystem.Drawing;
usingSystem.IO;
publicclassForm1:Form
{ Buttonbuton;TextBoxtextbox;RichTextBoxrtb;Labellab;
publicForm1()
{ InitializeComponent();
//setampriprietatipentruTextBox
textbox.PasswordChar='*';//caracterelecarevorascundeparola
textbox.Visible=true;/*dacaarfifostfalsenuaraparare
nimiclatastareaintextbox*/
}
privatevoidInitializeComponent()
{ buton=newButton();textbox=newTextBox();
rtb=newRichTextBox();lab=newLabel();
//setamproprietatileetichetei
lab.Location=newPoint(10,10);lab.Size=newSize(300,30);
lab.Text="Introducetiparola1234inprimultextbox\n"+
"sitextinrichtextboxsiapasatibutonul";
//setamproprietatilebutonului
buton.Location=newPoint(10,40);buton.Text="OK";
buton.Click+=buton_Click;
//setamproprietatileTextboxului
textbox.Location=newPoint(90,40);textbox.Size=newSize(100,30);
//setamproprietatilecontroleruluiRichTextBox
rtb.Location=newPoint(10,70);rtb.Size=newSize(270,200);
rtb.Multiline=true;
Controls.Add(buton);Controls.Add(textbox); Controls.Add(rtb);
Controls.Add(lab);Text="TextboxceprimesteoparolasiRichTextBox";}
privatevoidbuton_Click(objectsender,EventArgse)
{ if(textbox.Text=="1234")
File.WriteAllText("FisierText.txt",rtb.Text);
elseMessageBox.Show("Atiintrodusgresitparola");
textbox.Clear();}
}
publicclassProgram
{publicstaticvoidMain(string[]args){Application.Run(newForm1());}}

8.1.5
Meniuri
usingSystem;
usingSystem.Windows.Forms;
usingSystem.ComponentModel;
usingSystem.Drawing;
usingSystem.IO;
usingSystem.Drawing.Printing;
publicclassForm1:Form
{ MainMenumeniu;RichTextBoxrtb;
publicForm1()
{ InitializeComponent();
}
privatevoidInitializeComponent()
{ meniu=newMainMenu();
MenuItemm1=newMenuItem("File");meniu.MenuItems.Add(m1);
MenuItemm2=newMenuItem("Tools");meniu.MenuItems.Add(m2);
MenuItemm3=newMenuItem("Help");
meniu.MenuItems.Add(m3);
//adaugamsubitemilam1(File)
MenuItemsubm11=newMenuItem("New");m1.MenuItems.Add(subm11);
MenuItemsubm12=newMenuItem("Open");m1.MenuItems.Add(subm12);
MenuItemsubm13=newMenuItem("Save");m1.MenuItems.Add(subm13);
MenuItemsubm14=newMenuItem("SaveAs");

m1.MenuItems.Add(subm14);
MenuItemsubm15=newMenuItem("Print");m1.MenuItems.Add(subm15);
MenuItemsubm16=newMenuItem("Close");m1.MenuItems.Add(subm16);
//adaugamsubitemilam2(Tools)
MenuItemsubm21=newMenuItem("Coordinates");

m2.MenuItems.Add(subm21);
MenuItemsubm22=newMenuItem("ChangeSize");

m2.MenuItems.Add(subm22);
MenuItemsubm23=newMenuItem("Restore");

m2.MenuItems.Add(subm23);
//adaugareproprietatisihandlere
subm21.Click+=newEventHandler(MMCoordClick);
subm22.Click+=newEventHandler(MMChangeClick);
subm23.Click+=newEventHandler(MMRestoreClick);
subm11.Click+=New;subm11.Shortcut=Shortcut.CtrlN;

subm11.ShowShortcut=true;
subm12.Click+=Open;subm12.Shortcut=Shortcut.CtrlO;

subm12.ShowShortcut=true;
subm13.Click+=Save;subm13.Shortcut=Shortcut.CtrlS;

subm13.ShowShortcut=true;
subm14.Click+=SaveAs;
subm15.Click+=Print;subm15.Shortcut=Shortcut.CtrlP;

subm15.ShowShortcut=true;
subm16.Click+=Close;subm16.Shortcut=Shortcut.CtrlX;

subm16.ShowShortcut=true;
m3.Click+=Help;m3.Shortcut=Shortcut.F1;
m3.ShowShortcut=true;
//setamproprietatileRichtextboxului
rtb=newRichTextBox();rtb.Location=newPoint(10,10);
rtb.Size=newSize(270,240);rtb.Multiline=true;
rtb.AcceptsTab=true;
//adaugammeniulsirichtextboxul
Menu=meniu;Controls.Add(rtb);
Text="Untitled";
}
//HandlerformainmenuCoordinatesselection.
protectedvoidMMCoordClick(objectwho,EventArgse)
{
//Createastringthatcontainsthecooridinates.
stringsize=String.Format("{0}:{1},{2}\n{3}:{4},{5}",
"Top,Left",Top,Left,"Bottom,Right",Bottom,Right);
//Displayamessagebox.
MessageBox.Show(size,"WindowCoordinates",MessageBoxButtons.OK);
}
//HandlerformainmenuChangeselection.
protectedvoidMMChangeClick(objectwho,EventArgse)
{Width=Height=200;}
//HandlerformainmenuRestoreselection.
protectedvoidMMRestoreClick(objectwho,EventArgse)
{Width=Height=300;}
privatevoidNew(objectsender,EventArgse)
{ this.Text="Untitled";rtb.Clear();
}
privatevoidOpen(objectsender,EventArgse)
{ OpenFileDialogdlg=newOpenFileDialog();
dlg.Title="Open";
dlg.Filter="TextDocuments(*.txt)|*.txt|AllFiles(*.*)|*.*";
dlg.ShowDialog();
rtb.LoadFile(dlg.FileName,RichTextBoxStreamType.PlainText);
}

privatevoidSave(objectsender,EventArgse)
{ SaveFileDialogdlg=newSaveFileDialog();
dlg.Title="Save";
dlg.Filter="TextDocuments(*.txt)|*.txt|AllFiles(*.*)|*.*";
dlg.ShowDialog();
rtb.SaveFile(dlg.FileName,RichTextBoxStreamType.PlainText);
this.Text=dlg.FileName;
}
privatevoidSaveAs(objectsender,EventArgse)
{ SaveFileDialogdlg=newSaveFileDialog();
dlg.Title="Save";
dlg.Filter="TextDocuments(*.txt)|*.txt|AllFiles(*.*)|*.*";
dlg.ShowDialog();
rtb.SaveFile(dlg.FileName,RichTextBoxStreamType.PlainText);
this.Text=dlg.FileName;
}
privatevoidPrint(objectsender,EventArgse)
{ PrintDialogprintDlg=newPrintDialog();
PrintDocumentprintDoc=newPrintDocument();
printDoc.DocumentName="printing";
printDlg.Document=printDoc;
printDlg.AllowSelection=true;
printDlg.AllowSomePages=true;
//CallShowDialog
if(printDlg.ShowDialog()==DialogResult.OK)
printDoc.Print(); }
privatevoidClose(objectsender,EventArgse) {this.Close();}
privatevoidHelp(objectsender,EventArgse)
{MessageBox.Show("NotepadSimpluimplementatinC#");}
}
publicclassProgram
{ publicstaticvoidMain(string[]args){Application.Run(newForm1());}}
MeniurilesedeclarcuMainMenumeniu.SeapeleazconstructorulMainMenu()
SecreeazsubmeniuriprinMenuItemm1=newMenuItem(''File'');iarpaoitrebuie
adugatlameniuprinmeniu.MenuItems.Add(m1).SeadaugunsubsubmeniulaFile
prinMenuItemsubm11=newMenuItems(''New'');iarapoiseadauglasubmeniulm1
prinm1.MenuItems.Add(subm11).
EvenimentesepotadugacrendofuncietipprivatevoidNew(objectsender,
EventArgse){...}iseadauglasubmediuprinsubm11.Click=New;
MeniulprincipalNUseadaugcuControls.Add()ciprinMenu=meniu;
Seadaugtasterapideprinsubm11.Shortcut=Shortcut.CtrlN;//pt.Ctrl+N
ExemplulconinemoduldecrearealmeniurilorinterogativedetipSave,SaveAs,
Open.

8.1.6.1
ComboBox
usingSystem;
usingSystem.Windows.Forms;
usingSystem.ComponentModel;
usingSystem.Drawing;
publicclassForm1:Form
{ privateComboBoxcb;privateButtonbuton;
publicForm1()
{ InitializeComponent();
}
privatevoidInitializeComponent()
{cb=newComboBox();buton=newButton();
cb.Items.Add("Sunday");cb.Items.Add("Monday");
cb.Items.Add("Tuesday");cb.Items.Add("wednesday");
cb.Items.Add("Thursday");cb.Items.Add("Friday");
cb.Items.Add("Saturday");
Controls.Add(cb);Controls.Add(buton);
buton.Location=newPoint(150,0);buton.Text="OK";
buton.Click+=buton_Click; }
privatevoidbuton_Click(objectsender,EventArgse)
{MessageBox.Show("Atiselectat"+cb.Text);}
}
publicclassProgram
{ publicstaticvoidMain(string[]args){Application.Run(newForm1());}}
8.1.6.2
ListBox
usingSystem;usingSystem.Windows.Forms;
usingSystem.ComponentModel;usingSystem.Drawing;
publicclassForm1:Form
{ privateCheckedListBoxcb;privateButtonbuton;
publicForm1()
{ InitializeComponent();
string[]fructe={"mere","pere","capsune"};
cb.Items.AddRange(fructe);
cb.CheckOnClick=true;
}
privatevoidInitializeComponent()
{cb=newCheckedListBox();buton=newButton();
Controls.Add(cb);Controls.Add(buton);
buton.Location=newPoint(150,0);buton.Text="OK";
buton.Click+=buton_Click;
}

privatevoidbuton_Click(objectsender,EventArgse)
{ foreach(intindexCheckedincb.CheckedIndices)
{MessageBox.Show("Index#:"+indexChecked.ToString()+",is
checked.Checkedstateis:"+
cb.GetItemCheckState(indexChecked).ToString()+".");}
foreach(objectitemCheckedincb.CheckedItems){
MessageBox.Show("Itemwithtitle:\""+itemChecked.ToString()+
"\",ischecked.Checkedstateis:"+
cb.GetItemCheckState(cb.Items.IndexOf(itemChecked)).ToString()+".");}
}
}
publicclassProgram
{ publicstaticvoidMain(string[]args){Application.Run(newForm1());}
}
8.1.6.3
ListBox
usingSystem;
usingSystem.Windows.Forms;
usingSystem.ComponentModel;
usingSystem.Drawing;
publicclassForm1:Form
{ privateListBoxlb;privateButtonbuton;
publicForm1()
{ InitializeComponent();
}
privatevoidInitializeComponent()
{lb=newCheckedListBox();buton=newButton();
lb.Items.Add("mere");lb.Items.Add("pere");lb.Items.Add("gutui");
Controls.Add(lb);Controls.Add(buton);
buton.Location=newPoint(150,0);buton.Text="OK";
buton.Click+=buton_Click;
}
privatevoidbuton_Click(objectsender,EventArgse)
{ foreach(Objectobjinlb.SelectedItems)
MessageBox.Show(obj.ToString()); }
}
publicclassProgram
{ publicstaticvoidMain(string[]args){Application.Run(newForm1());}
}

8.1.7
PictureBox
usingSystem;
usingSystem.Windows.Forms;
usingSystem.ComponentModel;
usingSystem.Drawing;
publicclassForm1:Form
{ privatePictureBoximg;
publicForm1()
{ InitializeComponent();
}
privatevoidInitializeComponent()
{ img=newPictureBox();
img.Image=Image.FromFile("Imagine.jpg");
img.SizeMode=PictureBoxSizeMode.CenterImage;
//=StretchImage,CenterImage,NormalsauZoom
//img.ImageLocation=adresaURLsaucale
//img.Click+=..actiunelaapasareapecontrol
Controls.Add(img); }
}
publicclassProgram
{ publicstaticvoidMain(string[]args){Application.Run(newForm1());}}
8.1.8
ProgressBariTimer
8.1.8.1
Ceassimplu
usingSystem;usingSystem.Windows.Forms;usingSystem.ComponentModel;
usingSystem.Drawing;usingSystem.Timers;
publicclassForm1:Form
{ privateLabellab; privateSystem.Timers.Timert;
publicForm1()
{
InitializeComponent(); }
privatevoidInitializeComponent()
{ lab=newLabel();lab.BackColor=Color.Gray;

lab.ForeColor=Color.Green;
lab.Font=newFont("TimesNewRoman",15);
t=newSystem.Timers.Timer();t.Interval=1000;//intervalde1sec
t.Enabled=true;
t.Elapsed+=newElapsedEventHandler(OnTimedEvent);
Controls.Add(lab);
}
privatevoidOnTimedEvent(objectsender,ElapsedEventArgse)
{ if(sender==t)
{lab.Text=DateTime.Now.Hour.ToString()+":"+
DateTime.Now.Minute.ToString()+":"+
DateTime.Now.Second.ToString();
}}}
publicclassProgram
{ publicstaticvoidMain(string[]args){Application.Run(newForm1());}}

8.1.8.2
ProgressBariTimer
usingSystem;
usingSystem.Windows.Forms;
usingSystem.ComponentModel;
usingSystem.Drawing;
usingSystem.Timers;
publicclassForm1:Form
{ privateProgressBarprb;privateButtonbut;
privateSystem.Timers.Timert;
publicForm1()
{ InitializeComponent();
}
privatevoidInitializeComponent()
{ prb=newProgressBar();
prb.Minimum=0;prb.Maximum=200;
prb.Value=0;prb.Step=10;
t=newSystem.Timers.Timer();
t.Interval=1000;//intervalde1sec
t.Enabled=true;
t.Elapsed+=newElapsedEventHandler(OnTimedEvent);
but=newButton();but.Click+=buton_Click;
but.Location=newPoint(30,30);but.Text="Start";
Controls.Add(prb);Controls.Add(but);
}
privatevoidOnTimedEvent(objectsource,ElapsedEventArgse)
{ if(prb.Value<200)prb.PerformStep();
else{t.Stop();but.Text="Start";}
}
privatevoidbuton_Click(objectsender,EventArgse)
{ if(but.Text=="Start")
{t.Stop();t.Start();prb.Value=0;but.Text="Stop";}
else{t.Stop();but.Text="Start";}
}
}
publicclassProgram
{ publicstaticvoidMain(string[]args){Application.Run(newForm1());}}
ControlerulProgressBararepropriettieMinimum,Maximum,Step(princarese
seteazsaltul),saltulsefaceprinmetoda.PerformStep()sausetnddirectvaloarea
prinproprietateaprb.Value=..

8.1.8.3
Testeazidexteritatealaapsatviteaz
usingSystem;
usingSystem.Windows.Forms;
usingSystem.ComponentModel;
usingSystem.Drawing;
publicclassForm1:Form
{ privateLabellab;privateButtonbut;
privateDateTimeStart,Stop;
privateTimeSpanDif;
publicForm1()
{ InitializeComponent();
}
privatevoidInitializeComponent()
{ Start=newDateTime();Stop=newDateTime();
Dif=newTimeSpan();
but=newButton();but.Click+=buton_Click;
but.Location=newPoint(30,30);but.Text="Start";
lab=newLabel();lab.Text="00:00";
Controls.Add(but);Controls.Add(lab);
}
privatevoidbuton_Click(objectsender,EventArgse)
{
if(but.Text=="Start")
{ but.Text="Stop";
Start=DateTime.Now; }
else
{ but.Text="Start";
Stop=DateTime.Now;
Dif=StopStart;
lab.Text=((int)Dif.TotalSeconds).ToString()+":"+
(Dif.TotalMilliseconds/10).ToString();
}
}
}
publicclassProgram
{ publicstaticvoidMain(string[]args){Application.Run(newForm1());} }

8.1.9

MDIiMenuStrip

usingSystem;
usingSystem.Windows.Forms;
usingSystem.ComponentModel;
usingSystem.Drawing;
usingSystem.Collections.Generic;
usingSystem.Linq;
publicclassForm1:Form
{ privateSystem.Windows.Forms.MenuStripmenuStrip1;
privateSystem.Windows.Forms.ToolStripMenuItemcontainerToolStripMenuItem;
privateSystem.Windows.Forms.ToolStripMenuItemnewChildToolStripMenuItem;
privateSystem.Windows.Forms.ToolStripMenuItemwindowToolStripMenuItem;
privateSystem.Windows.Forms.ToolStripMenuItemarrangeToolStripMenuItem;
privateSystem.Windows.Forms.ToolStripMenuItemcascadeToolStripMenuItem;
privateSystem.Windows.Forms.ToolStripMenuItemtileHorizontalToolStripMenuItem;
privateSystem.Windows.Forms.ToolStripMenuItemtileVerticalToolStripMenuItem;
privateSystem.Windows.Forms.ToolStripMenuItemarrangeIconsToolStripMenuItem;
privateSystem.Windows.Forms.ToolStripSeparatortoolStripMenuItem1;
publicForm1()
{ InitializeComponent(); }
privatevoidInitializeComponent()
{
this.menuStrip1=newSystem.Windows.Forms.MenuStrip();
this.containerToolStripMenuItem=new
System.Windows.Forms.ToolStripMenuItem();
this.newChildToolStripMenuItem=new
System.Windows.Forms.ToolStripMenuItem();
this.windowToolStripMenuItem=newSystem.Windows.Forms.ToolStripMenuItem();
this.arrangeToolStripMenuItem=newSystem.Windows.Forms.ToolStripMenuItem();
this.cascadeToolStripMenuItem=newSystem.Windows.Forms.ToolStripMenuItem();
this.tileHorizontalToolStripMenuItem=new
System.Windows.Forms.ToolStripMenuItem();
this.tileVerticalToolStripMenuItem=new
System.Windows.Forms.ToolStripMenuItem();
this.arrangeIconsToolStripMenuItem=new
System.Windows.Forms.ToolStripMenuItem();
this.toolStripMenuItem1=newSystem.Windows.Forms.ToolStripSeparator();
this.menuStrip1.SuspendLayout();
this.SuspendLayout();
//menuStrip1
this.menuStrip1.Items.AddRange(newSystem.Windows.Forms.ToolStripItem[]{
this.containerToolStripMenuItem,
this.windowToolStripMenuItem});
this.menuStrip1.Location=newSystem.Drawing.Point(0,0);

this.menuStrip1.MdiWindowListItem=this.windowToolStripMenuItem;
this.menuStrip1.Name="menuStrip1";
this.menuStrip1.Size=newSystem.Drawing.Size(284,24);
this.menuStrip1.TabIndex=1;
this.menuStrip1.Text="menuStrip1";
//containerToolStripMenuItem
this.containerToolStripMenuItem.DropDownItems.AddRange(new
System.Windows.Forms.ToolStripItem[]{
this.newChildToolStripMenuItem});
this.containerToolStripMenuItem.Name="containerToolStripMenuItem";
this.containerToolStripMenuItem.Size=newSystem.Drawing.Size(71,20);
this.containerToolStripMenuItem.Text="Container";
//newChildToolStripMenuItem
this.newChildToolStripMenuItem.Name="newChildToolStripMenuItem";
this.newChildToolStripMenuItem.Size=newSystem.Drawing.Size(138,22);
this.newChildToolStripMenuItem.Text="NewChild...";
this.newChildToolStripMenuItem.Click+=new
System.EventHandler(this.newChildToolStripMenuItem_Click);
//windowToolStripMenuItem
this.windowToolStripMenuItem.DropDownItems.AddRange(new
System.Windows.Forms.ToolStripItem[]{
this.arrangeToolStripMenuItem,
this.toolStripMenuItem1});
this.windowToolStripMenuItem.Name="windowToolStripMenuItem";
this.windowToolStripMenuItem.Size=newSystem.Drawing.Size(63,20);
this.windowToolStripMenuItem.Text="Window";
//arrangeToolStripMenuItem
this.arrangeToolStripMenuItem.DropDownItems.AddRange(new
System.Windows.Forms.ToolStripItem[]{
this.cascadeToolStripMenuItem,
this.tileHorizontalToolStripMenuItem,
this.tileVerticalToolStripMenuItem,
this.arrangeIconsToolStripMenuItem});
this.arrangeToolStripMenuItem.Name="arrangeToolStripMenuItem";
this.arrangeToolStripMenuItem.Size=newSystem.Drawing.Size(116,22);
this.arrangeToolStripMenuItem.Text="Arrange";
//cascadeToolStripMenuItem
this.cascadeToolStripMenuItem.Name="cascadeToolStripMenuItem";
this.cascadeToolStripMenuItem.Size=newSystem.Drawing.Size(151,22);
this.cascadeToolStripMenuItem.Text="Cascade";
this.cascadeToolStripMenuItem.Click+=new
System.EventHandler(this.cascadeToolStripMenuItem_Click);
//tileHorizontalToolStripMenuItem
this.tileHorizontalToolStripMenuItem.Name="tileHorizontalToolStripMenuItem";
this.tileHorizontalToolStripMenuItem.Size=newSystem.Drawing.Size(151,22);

this.tileHorizontalToolStripMenuItem.Text="TileHorizontal";
this.tileHorizontalToolStripMenuItem.Click+=new
System.EventHandler(this.tileHorizontalToolStripMenuItem_Click);
//tileVerticalToolStripMenuItem
this.tileVerticalToolStripMenuItem.Name="tileVerticalToolStripMenuItem";
this.tileVerticalToolStripMenuItem.Size=newSystem.Drawing.Size(151,22);
this.tileVerticalToolStripMenuItem.Text="TileVertical";
this.tileVerticalToolStripMenuItem.Click+=new
System.EventHandler(this.tileVerticalToolStripMenuItem_Click);
//arrangeIconsToolStripMenuItem
this.arrangeIconsToolStripMenuItem.Name="arrangeIconsToolStripMenuItem";
this.arrangeIconsToolStripMenuItem.Size=newSystem.Drawing.Size(151,22);
this.arrangeIconsToolStripMenuItem.Text="ArrangeIcons";
this.arrangeIconsToolStripMenuItem.Click+=new
System.EventHandler(this.arrangeIconsToolStripMenuItem_Click);
//toolStripMenuItem1
this.toolStripMenuItem1.Name="toolStripMenuItem1";
this.toolStripMenuItem1.Size=newSystem.Drawing.Size(113,6);
//Form1
this.AutoScaleDimensions=newSystem.Drawing.SizeF(6F,13F);
this.AutoScaleMode=System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize=newSystem.Drawing.Size(284,264);
this.Controls.Add(this.menuStrip1);
this.IsMdiContainer=true;
this.MainMenuStrip=this.menuStrip1;
this.Name="Form1";
this.Text="Form1";
this.menuStrip1.ResumeLayout(false);
this.menuStrip1.PerformLayout();
this.ResumeLayout(false);
this.PerformLayout();
}
privatevoidnewChildToolStripMenuItem_Click(objectsender,EventArgse)
{ //Declarethechildformasanewone.
Form2childForm=newForm2();
//Setthemainformasaparentform.
childForm.MdiParent=this;
//Showthechildform.
childForm.Show();}
privatevoidcascadeToolStripMenuItem_Click(objectsender,EventArgse)
{//Setthelayouttocascade.
this.LayoutMdi(MdiLayout.Cascade);}
privatevoidtileHorizontalToolStripMenuItem_Click(objectsender,EventArgse)
{//Setthelayouttotilehorizontal.
this.LayoutMdi(MdiLayout.TileHorizontal);}

privatevoidtileVerticalToolStripMenuItem_Click(objectsender,EventArgse)
{//Setthelayouttotilevertical.
this.LayoutMdi(MdiLayout.TileVertical);}
privatevoidarrangeIconsToolStripMenuItem_Click(objectsender,EventArgse)
{//Setthelayouttoarrangeicons.
this.LayoutMdi(MdiLayout.ArrangeIcons);}
}
publicpartialclassForm2:Form
{ privateSystem.ComponentModel.IContainercomponents=null;
publicForm2()
{InitializeComponent();}
privatevoidInitializeComponent()
{ this.components=newSystem.ComponentModel.Container();
this.AutoScaleMode=System.Windows.Forms.AutoScaleMode.Font;
this.Text="Form2";
}
protectedoverridevoidDispose(booldisposing)
{ if(disposing&&(components!=null))
{components.Dispose();}
base.Dispose(disposing);}
}
publicclassProgram
{ publicstaticvoidMain(string[]args)
{Application.Run(newForm1());}
}

8.

InterfaagraficaVisualStudio.Net

PRimulFormular.Designer.csfiierulreinetotcesastabilitnetapadedesign,
relativlaformicontroale.Codulfiieruluisegenereazautomat.
namespaceClickEvent
{ partialclassPrimulFormular
{ privatevoidInitializeComponent()
{.....}
privateSystem.Windows.Forms.Buttonbuton;
privateSystem.Windows.Forms.CheckBoxverif;
privateSystem.Windows.Forms.TextBoxedit; }
}

9.

1. Menu Bar 2. Standard Toolbar 3. ToolBox


4. Forms Designer 5. Output Window
6. Solution Explorer 7. Properties Window
MajoritateavomprogramanVisualStudio.Net.Vomprezentarapidinterfaa
graficitipuriledefiiererezultatenurmacreriiunuiproiectVisualStudio.
FisiererezultatenurmacreriiproiectuluiPrimulFormular:
Considermcamcreatunprogramcareconineunsingurformular,
PrimulFormular,fiierelerezultatesunt:
Program.csconinemetodaMain().Estepunctuldeintrarenaplicatie,conine:
fragmentul:
staticvoidMain()
{ Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDelault(false);
Application.Run(newPrimulFormular);}
PrimulFormular.csimplementeazconstructoriiclaseiformularuluiitoate
metodeledefinitedeprogramator:
namespacePrimulFormular
{ publicpartialclassPrimulFormular
{ publicPrimulFormular()
//constructorulclaseiformular
{InitializeComponent();}
privatevoideveniment_Click(objectsender,EventArgse)
{/*seexecutalaapasareabutonuluiacruimetodederaspunslaevenimente*/}
}

DesenarenC#

http://msdn.microsoft.com/enus/library/system.drawing.graphics.aspx
ClaseleGDI+segsescnmarepartenspaiuldenumeSystem.Drawing.
System.Drawing.Graphicsesteceamaiutilizatclas.
MetodeleclaseiGraphics
Clear(Colorcolor)cursuprafaadedesenareioumplecuoculoaredefundal
specificat
DrawArc(Penpen,Rectanglerect,floatstartAngle,floatsweepAngle)deseneaz
unarccesarncadrantrundreptunghifolosindpeniaPen,
DrawImage(Imageim,Pointpoint)deseneazoimaginelapunctulselectat
DrawEllipse(Penpen,intx,inty,intwidth,intheight)deseneazoelips
DrawEllipse(Penpen,Rectanglerect)deseneazoelipsspecificatprintrun
dreptunghicareomrginete
DrawRectangular(Pen,intx,inty,intwidth,intheight)deseneazdreptunghi
DrawLine(Penpen,intx1,inty1,intx2,inty2)deseneazlinie
FillEllipse(Brush,Rectangular)umpleinterioruluneielipsecuajutoprulunei
pensuledetipBrush
FillEllipse(Brush,intx1,inty1,intstartAngle,intsweepAngle)
FillRectangular(Brush,intx1,inty1,intwidth,intheight)
DrawPolygon(Penpen,Point[]points)creeazunpoligondinpunctelestabiliten
vectoruldetipPoint
FillPolygon(Brush,Point[]points)umpleunpoligondinpunctelestabiliten
vectoruldetipPoint

usingSystem;
usingSystem.Windows.Forms;
usingSystem.ComponentModel;
usingSystem.Drawing;
publicclassForm1:Form
{
publicForm1()
{ InitializeComponent();
}
privatevoidInitializeComponent()
{
System.Drawing.Graphicsg=this.CreateGraphics();
Penp=newPen(Color.Blue,20);
Rectangler=newRectangle(newPoint(50,50),newSize(100,100));
g.Graphics.DrawRectangular(p,r);
/*sau*/
p.Color=Color.Red;g.DrawLine(p,newPoint(20,30),newPoint(75,80));
p.Color=Color.Gray;g.DrawArc(p,50,50,70,0,70,55);
p.DashStyle=System.Drawing.Drawing2D.DashStyle.Dot;
g.DrawRectangle(p,10,10,50,50);
p.Dispose();
}
}
publicclassProgram
{ publicstaticvoidMain(string[]args)
{Application.Run(newForm1());}
}

BIBLIOGRAFIE
1) http://msdn.microsoft.com/enus/library/system.io.file.aspx
2) http://www.informit.com/articles/article.aspx?p=27316
3) http://zetcode.com/language/csharptutorial/csharp/
4) http://www.c
sharpcorner.com/uploadfile/ggaganesh/workingwithmenusincsharp1128200500
4421am/workingwithmenusincsharp.aspx
5) http://www.java2s.com/Code/CSharp/GUIWindows
Form/AddaMainMenu.htm
6) http://codernd.com/DevelopersFile%5CHowtocreateamenuinC
sharp.aspx
7) http://www.dreamincode.net/forums/topic/180436globalhotkeys/
8) http://csharp.netinformations.com/gui/files/print/csmenu_print.htm
9)

S-ar putea să vă placă și