Hoppa till innehåll

Syntax, variabler och konstanter

↑

Exemplen är oberoende C#-utdrag för moderna .NET-konsolprojekt, om inget annat anges. Klassdeklarationer och toppnivåkod kan placeras i samma Program.cs-fil, med toppnivåkoden först.

Ett C#-program består av satser, uttryck och deklarationer. Variabler lagrar värden, medan tydliga namn visar vad de betyder. Börja här innan du går vidare till klasser.

Semikolon avslutar de flesta satser. Klamrar grupperar kodblock. Med toppnivåsatser kan ett konsolprogram börja utan en uttrycklig Main-metod. Console.WriteLine skriver en rad till standardutmatningen.

Example.cs
using System;
string playerName = "Alex";
int score = 12;
Console.WriteLine($"{playerName} scored {score} points.");

Identifierare, deklarationer och flera värden

Section titled “Identifierare, deklarationer och flera värden”

Identifierare är skiftlägeskänsliga: score och Score är olika namn. Använd gärna camelCase för lokala variabler och PascalCase för typer och publika medlemmar. Flera variabler kan deklareras samtidigt, men separata rader är ofta tydligare. var ger en typ som bestäms vid kompileringen och är inte samma sak som dynamic.

Example.cs
int width = 8, height = 6;
var area = width * height; // inferred as int
Console.WriteLine($"Area: {area}");

Använd const för värden som är kända vid kompilering och aldrig ändras. Vanliga variabler kan tilldelas nya värden. Ge konstanter tydliga namn i stället för att sprida oförklarade tal. För värden som bestäms vid körning, se lektionen om readonly.

Example.cs
const int MaximumLives = 3;
int lives = MaximumLives;
lives--; // valid; MaximumLives itself cannot change
Console.WriteLine("Lives left: " + lives);

Fördjupning: läs ett C#-program rad för rad

Section titled “Fördjupning: läs ett C#-program rad för rad”

Deklaration, tilldelning, uttryck och satser

Section titled “Deklaration, tilldelning, uttryck och satser”

int score = 10; deklarerar en variabel, anger dess typ och initierar den. 10 är ett literaluttryck. Senare är score = score + 5; en tilldelningssats: C# beräknar först uttrycket till höger med det gamla värdet och sparar sedan resultatet. Variabelnamnet är inte talet utan identifierar en lagringsplats med regler från typ och räckvidd.

Program.cs
int score = 10; // Deklaration och initiering
score = score + 5; // Tilldelning: 15
bool passed = score >= 12; // Jämförelsen ger en bool
Console.WriteLine(passed); // True

Räckvidd och livslängd är olika frågor

Section titled “Räckvidd och livslängd är olika frågor”

Räckvidd avgör var ett variabelnamn får användas: en variabel som deklareras i ett { ... }-block syns normalt inte utanför det. Livslängd handlar om hur länge värdet eller objektet finns kvar. Ett objekt kan exempelvis finnas kvar efter att en lokal variabel har lämnat sin räckvidd, om någon annan referens fortfarande pekar på objektet.

var score = 10; ger score den kända typen int vid kompilering. En senare tilldelning av en string ger kompileringsfel. var är praktiskt när typen är uppenbar eller mycket lång, men en uttrycklig typ kan göra numeriska konverteringar tydligare. dynamic är annorlunda: flera kontroller skjuts upp till körning, då fel kan uppstå.

Namnkonventioner hjälper framtida läsare

Section titled “Namnkonventioner hjälper framtida läsare”

Använd PascalCase för typer, metoder och publika egenskaper, camelCase för lokala variabler och parametrar samt beskrivande namn för konstanter. Namn som elapsedSeconds visar också enheten, vilket är viktigt för rörelse och tid i spel. Undvik namn som nästan ser likadana ut. Kommentarer bör förklara varför något görs; namnet ska redan visa vad värdet betyder.

Använd beskrivande namn och deklarera variabler i det minsta kodblock där de behövs.

En variabel som deklareras inuti ett if-block finns inte utanför blocket. var x = null saknar information för typinferens.

Skriv ett program med namn, poäng och ett namngivet maxvärde. Skriv ut om spelaren nådde maxpoängen.

Visa ett lösningsförslag

const int MaxScore = 100; int score = 100; Console.WriteLine(score == MaxScore); skriver ut True.