Introduktion till programmering med C# : Classes & Structs
Innehållsförteckning
Del 8.
Innan vi fortsätter och diskuterar egna datatyper, ska vi bara ta en kort genomgång av kod strukturering.
Organisering av kod
I .NET har vi ett begrepp som heter namespaces. Vi använder namespace för att organisera vår kod i grupper av kod som hör ihop. Hela .NET ramverket är organiserat i namespaces. Till exempel System.Console.WriteLine, där System är ett namespace, Console är en klass och Writeline är en metod. De kan även vara organiserade i hierarkier som till exempel System.IO där IO är ett namespace som finns i System namespace. Det finns inget krav på att använda namespace förutom när vi skapar komponenter, men det är alltid god praxis att använda det.
För att definiera ett namespace behöver vi bara ange ett namespace ovanför vår kod.
Exempel:
namespace nameOfNamespace
... vår kod ...
Det finns två olika sätt att definiera namespace det gamla sättet och det nya som introducerades i samband med lanseringen av .NET 6.0.
Före .NET 6.0
namespace nameOfNamespace{
... vår kod ...
}
Från och med .NET 6.0
namespace nameOfNamespace;
... vår kod ...
Vad är syftet med namespace?
Som jag nämnde ovan så är det ett sätt att organisera vår kod, det är en anledning men det finns fler.
- Kod i olika fysiska filer kan tillhöra samma namespace
- Vi kan undvika problem med namn kollisioner
- Vi kan återanvända samma namn på klasser/metoder så länge som de befinner sig i olika namespace
- Underlättar utrullning av applikationer och kod
- Förespråkar återanvändning
- I stora system kan vi skapa hierarkier av namespaces
Använda kod ifrån andra namespace
För att använda kod som ligger i ett annat namespace än koden som vi skriver använder vi direktivet using.
Exempel:
using System;
using System.IO;
using Invoices.Models;
Klasser och Struct
Förutom de fördefinierade datatyperna som finns i .NET så kan vi skapa egna typer genom att använda oss av classes eller structs.
Vad är då en klass och en struct och varför ska vi bry oss?
Syftet med dessa två typer är att vi på ett enkelt sätt kan gruppera ihop och organisera data/information som hör ihop tillsammans med metoder/funktionalitet som vi behöver för att bearbeta informationen. Sedan kan vi enkelt använda dessa om och om igen när vi behöver samma strukturerad information.
Structs
Structs är en värdetyp som vi kan använda för kapsla in data och beteende(funktionalitet). Vi använder struct nyckelordet struct för att definiera en struct typ. Oftast används structs för enklare saker som att till exempel skapa en typ som håller reda på koordinater som t ex: x och y eller longitud och latitud. Structs är ofta små och innehåller en handfull fält/variable och oftast med enkla metoder.
public struct Point
{
public int X { get; }
public int Y { get; }
public Point(int x, int y)
{
X = x;
Y = y;
}
public override string ToString() => $"{X} - {Y}";
}
Fokusera inte för mycket på koden som står inuti struct blocket, utan fokusera enbart på hur vi skapar en struct. Koden kommer vi att gå igenom i detalj när vi kommer dit.
Klasser
Klass(Class) är en referens typ som vi kan använda för att kapsla in data och beteende(funktionalitet). Klasser används ofta till att skapa representationer av verkliga ting som t ex: Personer, Kunder, Produkter osv...
Vi använder class nyckelordet för att definiera en klass.
public class Person
{
public string Name { get; }
public int Age { get; }
public Person(string name, int age)
{
Name = name;
Age = age;
}
public override string ToString() => $"{Name}, {Age}";
}
Fokusera inte för mycket på koden som står inuti class blocket, utan fokusera enbart på hur vi skapar en klass. Koden kommer vi att gå igenom i detalj när vi kommer dit. Vi kommer även att dyka ner på djupet med klasser när vi kommer till modulen Objekt Orienterad Programmering med C#.