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.
Snabböversikt
Section titled “Snabböversikt”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.
Så fungerar det
Section titled “Så fungerar det”Ett litet fungerande program
Section titled “Ett litet fungerande program”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.
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.
int width = 8, height = 6;var area = width * height; // inferred as intConsole.WriteLine($"Area: {area}");Konstanter och utskrift
Section titled “Konstanter och utskrift”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.
const int MaximumLives = 3;int lives = MaximumLives;lives--; // valid; MaximumLives itself cannot changeConsole.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.
int score = 10; // Deklaration och initieringscore = score + 5; // Tilldelning: 15bool passed = score >= 12; // Jämförelsen ger en boolConsole.WriteLine(passed); // TrueRä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 är fortfarande starkt typat
Section titled “var är fortfarande starkt typat”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.
När och varför?
Section titled “När och varför?”Använd beskrivande namn och deklarera variabler i det minsta kodblock där de behövs.
Vanligt misstag
Section titled “Vanligt misstag”En variabel som deklareras inuti ett if-block finns inte utanför blocket. var x = null saknar information för typinferens.
Testa själv
Section titled “Testa själv”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.
