Professional Documents
Culture Documents
C# alapok
Az óra célja egy alap nyelvi tudás biztosítása. Feltételezzük, hogy a hallgató
teljesítette a Programozás { Alapjai, I, II } kurzusokat, illetve az Alkalmazásfe-
jlesztés I-et, így ismeri a C, C++ és Java nyelveket. Ez lehetővé teszi, hogy az
órán ne az alap konstrukciókkal foglalkozzunk, hanem a C# nyelv tulajdonsá-
gaival.
Az anyag a Reiter István C# programozás lépésről lépésre könyv példáit veszi
alapul, melyek során az eszköztár bemutatásra kerül.
Típusok
Referencia és értéktípusok
Mint ahogy a Java nyelvből már ismerős lehet, a C#-ban is minden típus egy
ősosztályból származik. Jelen esetben ez az ősosztály a System.Object. A közös
ősosztályon felül viszont megkülönböztetünk érték és referenciatípusokat.
A referenciatípusú objektumok a heapen foglalnak helyet, míg az értéktípusú
változók a stacken (kivéve, ha egy referenciatípusú objektum adattagjai). Ez az
információ segít abban, hogy függvények paramétereinek átadását megérthessük.
• értéktípus: char, enum, bool, struct, int, float, double, . . . (minden
beépített numerikus típus)
• referenciatípus: string, saját és beépített osztályok, delegate
Amikor egy referenciatípusú változót értékül adunk egy másiknak, akkor nem
érték szerint fog lemásolódni, hanem a két változó ugyanarra a memóriaterületre
(objektumra) fog mutatni. Ezért, ha az egyiket változtatjuk, akkor mindkét
változón keresztül látott érték változni fog.
double variable = 3.14;
double another = variable;
another = 2.72;
Console.WriteLine(variable);
class RefType {
public double valueType;
}
// ...
RefType rt = new RefType();
rt.valueType = 3.14;
1
Szoftverfejlesztés Tanszék Szegedi Tudományegyetem
Konstansok
Nullable típusok
if (nullableInt.HasValue)
Console.WriteLine(nullableInt.Value);
if (anotherNullable == null)
anotherNullable = 3;
Implicit típusok
2
Szoftverfejlesztés Tanszék Szegedi Tudományegyetem
Névtelen típusok
Osztályok
Adattagok láthatósága
Parciális osztályok
3
Szoftverfejlesztés Tanszék Szegedi Tudományegyetem
// PartialClass.cs
public partial class PartialClass {
public int FirstPart { get; set; }
}
// Program.cs
public partial class PartialClass {
public void PrintToConsole() {
Console.WriteLine(FirstPart);
}
}
class Program {
static void Main(string[] args) {
var pClass = new PartialClass();
pClass.FirstPart = 3;
pClass.PrintToConsole();
}
}
Interfészek
4
Szoftverfejlesztés Tanszék Szegedi Tudományegyetem
Tulajdonságok
5
Szoftverfejlesztés Tanszék Szegedi Tudományegyetem
Kiterjesztett metódusok
Metódusok
Paraméterek átadása történhet érték és referencia szerint is. Érték szerinti átadás
esetében a paraméter lemásolódik és a metódus ezt a másolatot kapja meg. A
referencia szerinti paraméterátadásnál egy objektumra mutató referencia kerül
átadásra, nem történik másolás. Ily módon a függvényen belül történt változások
láthatók a függvényhívás után is.
Fontos kiemelni, hogy a referenciával kapott paraméter (objektum) állapotát
módosíthatjuk, magát a referenciát nem. Amennyiben a függvényen belül egy
6
Szoftverfejlesztés Tanszék Szegedi Tudományegyetem
DoMagic(pClass);
pClass.PrintToConsole();
}
static void DoMagic(PartialClass p) {
p = new PartialClass();
}
static void Main(string[] args) {
var pClass = new PartialClass();
pClass.FirstPart = 3;
pClass.PrintToConsole();
DoMagic(pClass);
pClass.PrintToConsole();
}
7
Szoftverfejlesztés Tanszék Szegedi Tudományegyetem
DoMagic(ref pClass);
pClass.PrintToConsole();
}
Out paraméter
ExampleMethod(5);
ExampleMethod(5, "custom");
ExampleMethod(5, "custom", 1);
ExampleMethod(3, optionalint: 4);
8
Szoftverfejlesztés Tanszék Szegedi Tudományegyetem
Órai munka
9
Szoftverfejlesztés Tanszék Szegedi Tudományegyetem
Hivatkozások
10