public/internal/protected/private (med anmärkning om file)
Lär er hur public, internal, protected och private ändrar synlighet och se reglerna för arv och samma assembly. Observera att file-scope-åtkomst inte finns i C# 6.
public/internal/protected/private (med anmärkning om file) är en gratis lektion i C# Academy på CoddyKit. Detta är lektion 1 av 3. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för C# Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i C# Academy innehåller totalt 3 lektioner.
Översikt över åtkomstmodifierare
Mål: Välj rätt synlighet.
- public: överallt
- internal: samma assembly
- protected: härledda klasser
- private: samma klass
- file: nyare än C# 6 (endast information)
private kontra public
Håll fält private och exponera validerade public-medlemmar.
using System;
// private: only inside the class; public: everywhere the class is visible
public class Box
{
private int _width; // hidden storage
public int Width // controlled access
{
get { return _width; }
set { _width = value < 0 ? 0 : value; } // simple guard
}
}
public class Program
{
public static void Main(string[] args)
{
Box b = new Box();
// b._width = -5; // INVALID: private (kept as comment)
b.Width = 10; // OK: public property
Console.WriteLine("Width = " + b.Width);
}
}
protected vid arv
protected används vid arv: härledda typer kan använda det, men utomstående kan inte göra det.
using System;
public class BaseCounter
{
protected int Count; // derived classes can see this
public int Value() { return Count; }
}
public class StepCounter : BaseCounter
{
public void Step() { Count = Count + 1; } // allowed: protected
}
public class Program
{
public static void Main(string[] args)
{
StepCounter sc = new StepCounter();
sc.Step();
// sc.Count = 5; // INVALID from outside (commented)
Console.WriteLine("Value = " + sc.Value());
}
}
internal-åtkomst
internal begränsar synligheten till den aktuella assemblyn (bibliotekets eller appens bygge).
using System;
// internal type: visible only inside this assembly
internal class InternalHelper
{
public static string Ping() { return "pong"; }
}
// public type can use internal from the same assembly
public class UsesInternal
{
public string Call() { return InternalHelper.Ping(); }
}
public class Program
{
public static void Main(string[] args)
{
UsesInternal u = new UsesInternal();
Console.WriteLine(u.Call());
}
}
protected internal
protected internal betyder att något är åtkomligt för härledda typer eller var som helst i samma assembly.
using System;
public class LibraryBase
{
// Accessible to derived types OR anywhere in the same assembly
protected internal void Touch() { Console.WriteLine("touched"); }
}
public class LibChild : LibraryBase
{
public void Use() { Touch(); } // via inheritance
}
public class Program
{
public static void Main(string[] args)
{
LibChild c = new LibChild();
c.Use();
LibraryBase b = new LibraryBase();
b.Touch(); // same assembly, allowed
}
}
Kommentarer och tips om file-modifieraren
Obs! Åtkomstmodifieraren file tillkom i nyare C# (den finns inte i C# 6). I C# 6 använder Ni public, internal, protected, private och protected internal.
- Föredra private som standard
- Använd public endast för API:ets offentliga yta
- Använd internal för att dölja implementationen från andra assemblyer
- Använd protected för samarbete mellan bas- och härledda klasser
Innebörden av internal
Sammanfattning
Sammanfattning: Välj den minsta nödvändiga synligheten: private → protected/internal → public. C# 6 innehåller inte den nyare modifieraren file; använd internal för att dölja innehåll på assemblynivå.
Lär dig C# med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 93
- Lektioner
- 346
Vanliga frågor
Är lektionen ”public/internal/protected/private (med anmärkning om file)” gratis?
Ja – hela texten till ”public/internal/protected/private (med anmärkning om file)” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i C# Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i C# Academy innehåller totalt 3 lektioner.
Vad lär jag mig i ”public/internal/protected/private (med anmärkning om file)”?
Lär er hur public, internal, protected och private ändrar synlighet och se reglerna för arv och samma assembly. Observera att file-scope-åtkomst inte finns i C# 6. Ni övar på C# Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig C# Academy?
Du behöver inga förkunskaper. Utbildningen i C# Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 1 av 3.
Hur lång tid tar lektionen ”public/internal/protected/private (med anmärkning om file)”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här C# Academy-lektionen?
Ja. Varje C# Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- public/internal/protected/private (med anmärkning om file)
- Namespaces, using-direktiv och globala usings (anmärkning)
- Partiella typer och filer