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

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.
26. april kl. 16:07
errorÆ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:

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
Debatten
Log ind for at deltage i debatten.
settingsDebatindstillinger