Om C-Sharp

🏛️ Historien om C-Sharp

Var en gång i början av 2000-talet… Microsoft behövde ett nytt programmeringsspråk. Något som kunde konkurrera med Java, men som var “mer Microsoft”. Så de skapade C-Sharp (uttalas “C-sharp”, som musiknoten).

🎯 Designfilosofin

Anders Hejlsberg (samme kille som skapade Delphi och TypeScript) ledde utvecklingen. Målet var enkelt: skapa ett språk som var:

  • Enkelt som Visual Basic
  • Kraftfullt som C++
  • Säkert som Java
  • Modernt för sin tid

📅 C-Sharp:s evolution genom åren

Här är resan från baby-C-Sharp till dagens kraftpaket:

C-Sharp 1.0 (2002) - Det stora debutet

  • Lanserades med .NET Framework 1.0
  • Grundläggande objektorientering
  • Managed code (minneshantering sköttes automatiskt)
  • “Hej världen” för första gången!

C-Sharp 2.0 (2005) - Tonårsproblem lösta

  • Generics - nu kunde vi göra List<string> istället för bara ArrayList
  • Nullable types - int? betyder “int som kan vara null”
  • Anonymous methods - små funktioner utan namn
  • Partial classes - dela upp stora klasser i flera filer

C-Sharp 3.0 (2007) - LINQ förändrade alles

  • LINQ - Query language integrerat i C-Sharp! Magi!
  • Lambda expressions - x => x * 2 istället för långa funktioner
  • Anonymous types - new { Name = "Marcus", Age = 30 }
  • Auto-implemented properties - public string Name { get; set; }

C-Sharp 4.0 (2010) - Dynamisk period

  • dynamic keyword - för när du inte vet typen förrän runtime
  • Optional parameters - void Method(string name = "default")
  • Named arguments - Method(name: "Marcus", age: 30)

C-Sharp 5.0 (2012) - Asynkron revolution

  • async/await - äntligen enkelt att hantera asynkron kod!
  • Ingen mer “callback hell”
  • async Task<string> GetDataAsync()

C-Sharp 6.0 (2015) - Syntaktisk socker

  • String interpolation - $"Hej {name}!" istället för string.Format
  • Null-conditional operators - person?.Name?.Length
  • Expression-bodied members - public string FullName => $"{FirstName} {LastName}";
  • Auto-property initializers - public string Name { get; set; } = "Default";

C-Sharp 7.0 (2017) - Pattern matching och tuples

  • Tuples - (string name, int age) = GetPerson();
  • Pattern matching - if (obj is string s) { ... }
  • Local functions - funktioner inne i andra funktioner
  • Out variables - int.TryParse(input, out var result)

C-Sharp 8.0 (2019) - Nullable reference types

  • Nullable reference types - kompilatorn varnar för potentiella null-problem
  • Switch expressions - result = input switch { ... }
  • Default interface methods - interfaces kan ha implementation
  • Async streams - IAsyncEnumerable<T>

C-Sharp 9.0 (2020) - Records och init

  • Records - public record Person(string Name, int Age);
  • Init-only properties - public string Name { get; init; }
  • Top-level programs - ingen Main-metod behövs för enkla program
  • Pattern matching improvements

C-Sharp 10.0 (2021) - Global usings och file-scoped namespaces

  • Global using directives - global using System;
  • File-scoped namespaces - namespace MyApp;
  • Record structs - värdetyper som records
  • Constant interpolated strings

C-Sharp 11.0 (2022) - Raw strings och generic math

  • Raw string literals - """Multi-line strings"""
  • Generic math - matematik som fungerar med alla siffertyper
  • List patterns - pattern matching på listor
  • Required members - public required string Name { get; set; }

C-Sharp 12.0 (2023) - Primary constructors för alla

  • Primary constructors - även för vanliga klasser, inte bara records
  • Collection expressions - [1, 2, 3] istället för new[] { 1, 2, 3 }
  • Inline arrays - för prestanda-kritiska scenarion
  • Lambda default parameters

🚀 Varför C-Sharp är fantastiskt idag

C-Sharp har mognat från ett “Java-copycat” till ett riktigt kraftfullt och modernt språk:

✅ Plattformsoberoende

  • Kör på Windows, Mac, Linux
  • .NET Core/.NET 5+ är öppen källkod
  • Docker-stöd inbyggt

✅ Bred användning

  • Web: ASP.NET Core för webbappar
  • Desktop: WPF, WinUI för Windows-appar
  • Mobile: Xamarin/.NET MAUI för telefoner
  • Games: Unity använder C-Sharp
  • Cloud: Azure Functions, microservices
  • AI/ML: ML.NET för maskininlärning

✅ Stark community

  • Enormt ekosystem av bibliotek (NuGet)
  • Fantastisk dokumentation
  • Aktiv utveckling (ny version varje år)

🎭 Språkets personlighet

Om C-Sharp var en person skulle det vara:

  • Pålitlig - du vet vad du får
  • Anpassningsbar - funkar i många miljöer
  • Balanserad - inte för komplicerat, inte för enkelt
  • Modern - håller jämna steg med tiden
  • Professionell - seriöst nog för enterprise, kul nog för hobby

😄 Obligatoriskt pappaskämt

Varför heter det C-Sharp? För att C++ var redan taget, och B# lät dumt! 🎵

Du klarar det här! C-Sharp är som en bra vän - lätt att komma igång med, men blir bara bättre ju längre ni känner varandra.


Upp

Upp


Licens: Apache 2.0 | © 2023 Marcus Medina, Campus Mölndal. Alla rättigheter förbehållna.
Du får använda och modifiera detta verk enligt villkoren i Apache License, Version 2.0. Du får inte använda detta verk för kommersiella ändamål utan tillstånd från upphovsmannen.