Target-typed new-expressies
Vereenvoudig het maken van objecten met target typing.
Target-typed new-expressies is een gratis C# Academy-les op CoddyKit. Dit is les 4 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject C# Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus C# Academy bevat in totaal 4 lessen.
new met doeltype
Sinds C# 9 kun je Type x = new(); schrijven en het type na new weglaten wanneer het doeltype bekend is.
using System;
using System.Collections.Generic;
class Program {
static void Main() {
List<int> numbers = new();
numbers.Add(1);
Console.WriteLine(numbers.Count);
}
}Redundantie verwijderen
Wanneer de variabele het type al vermeldt, is het herhalen ervan na new overbodig. De lege new() voorkomt die herhaling.
using System;
using System.Text;
class Program {
static void Main() {
StringBuilder sb = new();
sb.Append("Hi");
Console.WriteLine(sb.ToString());
}
}Constructorargumenten doorgeven
Een new() met doeltype accepteert nog steeds constructorargumenten tussen de haakjes.
using System;
class Point {
public int X, Y;
public Point(int x, int y) { X = x; Y = y; }
}
class Program {
static void Main() {
Point p = new(3, 4);
Console.WriteLine(p.X + ", " + p.Y);
}
}Met objectinitialisaties
Je kunt new met doeltype combineren met een blok voor objectinitialisatie.
using System;
class User {
public string Name;
public int Age;
}
class Program {
static void Main() {
User u = new() { Name = "Ann", Age = 30 };
Console.WriteLine(u.Name + " " + u.Age);
}
}In velden
new met doeltype werkt ook voor veldinitialisaties, waardoor declaraties beknopt blijven.
using System;
using System.Collections.Generic;
class Program {
static List<string> items = new();
static void Main() {
items.Add("a");
Console.WriteLine(items.Count);
}
}In methodeargumenten
Wanneer een parameter een bekend type heeft, kun je new() rechtstreeks als argument doorgeven.
using System;
using System.Collections.Generic;
class Program {
static void Print(List<int> list) {
Console.WriteLine(list.Count);
}
static void Main() {
Print(new());
}
}new() retourneren
Als het retourtype van een methode bekend is, kun je new() retourneren zonder de typenaam te herhalen.
using System;
using System.Collections.Generic;
class Program {
static List<int> Make() {
return new() { 1, 2, 3 };
}
static void Main() {
Console.WriteLine(Make().Count);
}
}Contrast met var
var x = new List<int>() vermeldt het type rechts; List<int> x = new() vermeldt het links. Kies wat het prettigst leest.
using System;
using System.Collections.Generic;
class Program {
static void Main() {
var a = new List<int>();
List<int> b = new();
Console.WriteLine(a.Count + b.Count);
}
}Onduidelijkheid is een fout
Als de compiler het doeltype niet kan bepalen, mislukt new(). Het doeltype moet uit de context duidelijk zijn.
using System;
class Program {
static void Main() {
object o = new object();
Console.WriteLine(o.GetType().Name);
}
}Leesbaarheid met lange typen
new met doeltype is vooral prettig bij uitvoerige generieke typen, omdat je het type niet twee keer hoeft te schrijven.
using System;
using System.Collections.Generic;
class Program {
static void Main() {
Dictionary<string, List<int>> map = new();
map["a"] = new() { 1, 2 };
Console.WriteLine(map["a"].Count);
}
}Een moderne stijl
new met doeltype houdt declaraties netjes en behoudt volledige statische typering en compilercontroles.
using System;
using System.Collections.Generic;
class Program {
static void Main() {
Queue<string> q = new();
q.Enqueue("first");
Console.WriteLine(q.Dequeue());
}
}Korte toets
Toets je begrip van expressies met new en een doeltype.
Samenvatting
Met new() met doeltype kun je het type na new weglaten wanneer het doeltype al bekend is. Zo verminder je herhaling in declaraties, velden, argumenten en retourwaarden.
De constructie accepteert nog steeds constructorargumenten en initialisaties, mislukt wanneer het type onduidelijk is en vormt een aanvulling op var als moderne, volledig typeveilige stijl.
Leer C# met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 93
- Lessen
- 346
Veelgestelde vragen
Is de les “Target-typed new-expressies” gratis?
Ja — de volledige tekst van “Target-typed new-expressies” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus C# Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus C# Academy bevat in totaal 4 lessen.
Wat leer ik in “Target-typed new-expressies”?
Vereenvoudig het maken van objecten met target typing. Je oefent met C# Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met C# Academy te beginnen?
Ervaring vooraf is niet nodig. C# Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 4 van 4.
Hoe lang duurt de les “Target-typed new-expressies”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over C# Academy?
Ja. Elke les over C# Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- Lokale type-inferentie met var
- Wanneer u var beter niet gebruikt
- Het type dynamic
- Target-typed new-expressies