Det pønser C#’s danske chef på i version ni: Ind med records og ud med static void Main()

Det pønser C#’s danske chef på i version ni: Ind med records og ud med static void Main()
Illustration: Microsoft.
Ligesom i Java er poster på vej til C#, sammen med mange andre nyheder.
28. maj 2020 kl. 05:05
errorÆldre end 30 dage
Manglende links i teksten kan sandsynligvis findes i bunden af artiklen.

Der er meget fokus på dataklasser i sprog som Java og C# for tiden, og mon ikke noget af den aktivitet skyldes et større fokus på at opnå kompakte objekter, hvis graf – de enkelte dele af objektet – ikke er spredt ud over hele hukommelsen.

I løbet af de sidste tyve år har cpu’en sprintet væk fra hukommelsen, når det angår hastighed, så nu er det ikke længere helt så underordnet, hvordan datastrukturer repræsenteres i hukommelsen.

Java har netop fået ‘records’, poster, som det kendes fra Pascal og som structs i C, og nu er samme facilitet på vej i C#, hvis man skal tro sprogets danske bagmand, Mads Thorgersen, der i et nyt, langt blogindlæg løfter sløret for de kommende faciliteter i C# 9.

Mads Torgersen har overtaget tøjlerne fra C#-opfinder Anders Hejlsberg og han har en fortid som lektor og ph.d i datalogi fra Aarhus Universitet, så sproget bliver på danske hænder.

Structs og værdi-typer findes nu i forvejen i C#. Så hvori består det nye?

»Hvis du ønsker, at hele objektet skal være uforanderligt og opføre sig som en værdi, skal du overveje at erklære det som en record,« skriver Mads Thorgersen og illustrerer med dette eksempel:

Log ind og få adgang
Du kan læse indholdet ved at logge ind eller oprette dig som ny bruger.
Debatten
Log ind for at deltage i debatten.
settingsDebatindstillinger
8
28. maj 2020 kl. 18:33

Hvis C#-holdet var stensikker på en november-deadline, havde de nok skrevet det på projektsiden.

Hvorfor skulle de dog pludselig begynde på det? https://github.com/dotnet/csharplang/milestones

  • C# 10.0 står til 1. jan 2100
  • C# 9.0 står til 1. jan 2090
  • C# 8.0 står til 1. jan 2080 selvom det udkom sidste år.
  • C# 7.3 står til 1. jan 2073 gæt selv hvad 7.2 og 7.1 står til.

https://channel9.msdn.com/Events/Build/2020/BOD108 - hvis du spooler frem til 14:30 her starter Mads med selv at fortælle om C# 9.0 efter de første 14 minutter er gået med C# 8.0 og hører du bare det første minut fra 14:30 hører du Mads selvfortælle at planen er at shippe sammen med .Net 5, mens det også står ret tydeligt i hans præsentation.

Læser du kommentarerne i det blogindlæg du selv hanviser til så svarer han selv "Yes" til "Is C#9 tied to .NET 5?"

7
Journalist -
28. maj 2020 kl. 13:31
Journalist

Hvis C#-holdet var stensikker på en november-deadline, havde de nok skrevet det på projektsiden. Men det er bare min antagelse.

Tania/V2

6
28. maj 2020 kl. 13:13

Der er tale om en dato for et preview i den pågældende blog. Til sammenligning gik der 8,5 måned fra beta til færdig udgave i .Net 4. Men vi får se.

Prøv at læs en gang mere - .Net 5 er allerede nu ude i preview 4 som der står og linkes til i blogindlæget.

Udgivelsen af .Net 5 var sat til September 2020, men er nu rykket til November 2020. I slut 2021 er .Net 6 sat til at udkomme og C# 9 skulle gerne være kommet lang tid før det.https://github.com/dotnet/core/blob/master/roadmap.md

.Net Framework har intet med deres nuværende udvikling af .Net Core at gøre. Det er en meget vildlende sammenligning. Hvis man vil sammenligne skal man se på .Net core 3.0 og 3,1 fra 2019.

Og ja vi får se :-) fx her: https://dotnet.microsoft.com/download/dotnet/5.0

4
Journalist -
28. maj 2020 kl. 11:01
Journalist

Der er tale om en dato for et preview i den pågældende blog. Til sammenligning gik der 8,5 måned fra beta til færdig udgave i .Net 4. Men vi får se.

Mvh Tania/v2

2
28. maj 2020 kl. 10:26

Når nu de er i gang med at ændre det hele hvorfor så ikke implementer main functionen efter C og C++.

Det er åbenhart for meget at skulle taste. Jeg undre mig over om det vil være muligt at sprede main coden ud imellem functionerne, istedet for som nu hvor det skal være samlet i en blok.

For mig virker en ændring som sparer en eller to linjer kode som totalt formålsløst, programmer har normalt tusinder af linjer kode.

1
28. maj 2020 kl. 09:47

Når nu de er i gang med at ændre det hele hvorfor så ikke implementer main functionen efter C og C++.

Eksempel;

  1. using System;
  2.  
  3. int Main(...)
  4. {
  5. int somevalue;
  6. Console.WriteLine("Hello World!");
  7. ...
  8. somevalue = SomeFunction()
  9. return somevalue;
  10. }
  11.  
  12. class Program
  13. {
  14. int SomeFunction(...)
  15. {
  16. ...
  17. }
  18. }