Nu kan du afprøve nye muligheder i C# 11

26. april 2022 kl. 16:07
Nu kan du afprøve nye muligheder i C# 11
Illustration: Bigstock/Rost-9.
Generiske attributter og nemmere muligheder med strengkonstanter er på tapetet til den kommende udgave af Microsofts sprog.
Artiklen er ældre end 30 dage

Microsoft har løftet sløret for nyhederne i den kommende C# 11, som kan afprøves i Visual Studio 2022 version 17.2. De nye muligheder er i forhåndsvisning, og man skal sætte LangVersion-indstillingen i Visual Studio for at aktivere de nye faciliteter.

Blandt nyhederne er generiske attributter. Atributter er C#'s navn for metadata, som også kaldes for annotationer i andre sprog. Nyheden er, at man kan skabe en typeparametriseret klasse som nedarves fra System.Attribute.

Det giver en mere praktisk syntaks for attributter, der kræver en System.Type-parameter, skrives der i motivationen. Tidligere skulle man oprette en attribut, der tager en 'Type' som parameter i constructor'en.

Det ser sådan ud i C# 11:

  1. public class GenericAttribute<T> : Attribute { }
  2.  
  3. [GenericAttribute<string>()]
  4. public string Method() => default;

I interfaces kan man nu erklære statiske abstrakte felter. Det er med tanke på matematiske operatorer i generiske typer.

Artiklen fortsætter efter annoncen

Teksten inden for tuborgparenteser i forbindelse med strenginterpolering kan nu strække sig over flere linjer.

Det er udtryk som:

  1. Console.WriteLine("Hello, {0}! Today is {1}, it's {2:HH:mm} now.", name, date.DayOfWeek, date);

Teksten mellem {- og }-tegnene parses som C#, og alle lovlige tegn i sproget er tilladt, også linjeskift. Det gør det lettere at læse strenginterpolation, der bruger længere C#-udtryk, f.eks. switch med pattern matching eller LINQ-forespørgsler.

Også nyt er 'raw string literals', rå strengkonstanter. De kan indeholde vilkårlig tekst, herunder blanktegn, nye linjer, indlejrede anførselstegn og andre specialtegn uden at kræve escape-sekvenser. En raw string literal begynder med mindst tre dobbelte citationstegn. Den slutter med det samme antal anførselstegn:

  1. string longMessage = """
  2.     This is a long message.
  3.     It has several lines.
  4.         Some are indented
  5.                 more than others.
  6.     Some should start at the first column.
  7.     Some have "quoted text" in them.
  8.     """;

De nye faciliteter kan ændres før den endelige udgivelse, formaner Microsoft. Det er heller ikke sikkert, at alle mulighederne frigives i C# 11, men videreudvikles til senere udgaver.

Ingen kommentarer endnu.  Start debatten
Denne artikel er gratis...

...men det er dyrt at lave god journalistik. Derfor beder vi dig overveje at tegne abonnement på Version2.

Digitaliseringen buldrer derudaf, og it-folkene tegner fremtidens Danmark. Derfor er det vigtigere end nogensinde med et kvalificeret bud på, hvordan it bedst kan være med til at udvikle det danske samfund og erhvervsliv.

Og der har aldrig været mere akut brug for en kritisk vagthund, der råber op, når der tages forkerte it-beslutninger.

Den rolle har Version2 indtaget siden 2006 - og det bliver vi ved med.

Debatten
Log ind eller opret en bruger for at deltage i debatten.
settingsDebatindstillinger