Megosztás:


új operátor – Az new operátor létrehoz egy új típusú példányt

Az new operátor létrehoz egy új típusú példányt. A kulcsszót new tagdeklaráció-módosítóként vagy általános típusmegkötésként is használhatja.

A C# nyelv referenciadokumentuma a C# nyelv legújabb kiadású verzióját ismerteti. Emellett a közelgő nyelvi kiadás nyilvános előzetes verziójú funkcióinak kezdeti dokumentációját is tartalmazza.

A dokumentáció azonosítja azokat a funkciókat, amelyeket először a nyelv utolsó három verziójában vagy az aktuális nyilvános előzetes verziókban vezetnek be.

Jótanács

Ha meg szeretné tudni, hogy mikor jelent meg először egy funkció a C#-ban, tekintse meg a C# nyelvi verzióelőzményeiről szóló cikket.

Konstruktor-meghívás

Egy típus új példányának létrehozásához hívja meg az ilyen típusú konstruktorok egyikét az new operátorral:

var dict = new Dictionary<string, int>();
dict["first"] = 10;
dict["second"] = 20;
dict["third"] = 30;

Console.WriteLine(string.Join("; ", dict.Select(entry => $"{entry.Key}: {entry.Value}")));
// Output:
// first: 10; second: 20; third: 30

Egy objektum vagy gyűjtemény inicializálóját használhatja az new operátorral egy objektum példányosítására és inicializálására egy utasításban, ahogyan az alábbi példa mutatja:

var dict = new Dictionary<string, int>
{
    ["first"] = 10,
    ["second"] = 20,
    ["third"] = 30
};

Console.WriteLine(string.Join("; ", dict.Select(entry => $"{entry.Key}: {entry.Value}")));
// Output:
// first: 10; second: 20; third: 30

Céltípus new

A konstruktor-meghívási kifejezések cél típusúak. Ha egy kifejezés céltípusa ismert, kihagyhat egy típusnevet, ahogy az alábbi példa is mutatja:

List<int> xs = new();
List<int> ys = new(capacity: 10_000);
List<int> zs = new() { Capacity = 20_000 };

Dictionary<int, List<int>> lookup = new()
{
    [1] = new() { 1, 2, 3 },
    [2] = new() { 5, 8, 3 },
    [5] = new() { 1, 0, 4 }
};

Ahogy az előző példa is mutatja, mindig használjon zárójeleket egy cél típusú new kifejezésben.

Ha egy new kifejezés céltípusa ismeretlen (például a var kulcsszó használatakor), meg kell adnia egy típusnevet.

Tömb létrehozása

Az operátorral new tömbpéldányt is létrehozhat, ahogy az alábbi példa is mutatja:

var numbers = new int[3];
numbers[0] = 10;
numbers[1] = 20;
numbers[2] = 30;
Console.WriteLine(string.Join(", ", numbers));
// Output:
// 10, 20, 30

A tömb inicializálási szintaxisával tömbpéldányt hozhat létre, és feltöltheti egy utasítás elemeivel. Az alábbi példa különböző módokon mutatja be, hogyan teheti ezt meg:

var a = new int[3] { 10, 20, 30 };
var b = new int[] { 10, 20, 30 };
var c = new[] { 10, 20, 30 };
Console.WriteLine(c.GetType());  // output: System.Int32[]

A tömbökről további információt a Tömbök című témakörben talál.

Névtelen típusok példányosítása

Névtelen típusú példány létrehozásához használja az operátor és az new objektum inicializáló szintaxisát:

var example = new { Greeting = "Hello", Name = "World" };
Console.WriteLine($"{example.Greeting}, {example.Name}!");
// Output:
// Hello, World!

Típuspéldányok megsemmisítése

Nem kell megsemmisítenie a korábban létrehozott típuspéldányokat. A rendszer automatikusan megsemmisíti a referencia- és értéktípusok példányait. A rendszer megsemmisíti az értéktípusok példányait, amint az azokat tartalmazó környezet megsemmisül. A szemétgyűjtő az utolsó hivatkozás eltávolítása után néhány meghatározatlan időpontban megsemmisíti a referenciatípusok példányait.

A nem felügyelt erőforrásokat( például fájlkezelőt) tartalmazó típuspéldányok esetében determinisztikus tisztítást kell alkalmazni annak érdekében, hogy az erőforrások a lehető leghamarabb felszabaduljanak. További információkért tekintse meg az System.IDisposable API-referenciát és az using utasítást ismertető cikket.

Operátorok túlterhelése

A felhasználó által definiált típus nem terhelheti túl az operátort new .

C# nyelvspecifikáció

További információ: A C# nyelv specifikációjának új operátor szakasza.

A cél típusú new kifejezéssel kapcsolatos további információkért tekintse meg a funkciójavaslat megjegyzését.

Lásd még