0Pricing
C# Academy · Lezione

Metodi e campi statici

Definisca membri appartenenti direttamente al tipo.

Metodi e campi statici è una lezione C# Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento C# Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso C# Academy include 4 lezioni in totale.

Statico e di istanza

Un membro di istanza appartiene a ogni oggetto; un membro statico appartiene alla classe stessa. Esiste una sola copia di un membro statico, condivisa da tutti.

using System;

class Counter
{
    public static int Total;   // shared
    public int Id;             // per instance
}

class Program
{
    static void Main()
    {
        Counter.Total = 5;
        Console.WriteLine("Shared Total: " + Counter.Total);
    }
}

Dichiarare campi statici

Si accede a un campo static tramite il nome della classe, non tramite un'istanza: ClassName.Field.

using System;

class Bank
{
    public static decimal InterestRate = 0.05m;
}

class Program
{
    static void Main()
    {
        Console.WriteLine("Rate: " + Bank.InterestRate);
    }
}

Metodi statici

Un metodo static viene eseguito senza un'istanza. Lo si chiama sulla classe. Non può usare i campi di istanza perché non esiste this.

using System;

class MathUtil
{
    public static int Square(int x)
    {
        return x * x;
    }
}

class Program
{
    static void Main()
    {
        Console.WriteLine(MathUtil.Square(7));
    }
}

Stato condiviso tra le istanze

Poiché un campo statico ha una sola copia, ogni istanza vede lo stesso valore. Questo è utile per i contatori e per la configurazione condivisa.

using System;

class Robot
{
    public static int Count;

    public Robot()
    {
        Count++;
    }
}

class Program
{
    static void Main()
    {
        new Robot();
        new Robot();
        new Robot();
        Console.WriteLine("Robots created: " + Robot.Count);
    }
}

I metodi statici non possono usare i dati di istanza

Un metodo statico non ha this, quindi può usare solo parametri, variabili locali e altri membri statici.

using System;

class Calculator
{
    public static int Add(int a, int b) => a + b;
    public static int Multiply(int a, int b) => a * b;
}

class Program
{
    static void Main()
    {
        Console.WriteLine(Calculator.Add(2, 3));
        Console.WriteLine(Calculator.Multiply(4, 5));
    }
}

Combinare statico e di istanza

Una classe può contenere entrambi i tipi. I metodi di istanza possono leggere i membri statici, ma i metodi statici non possono leggere i membri di istanza.

using System;

class Account
{
    public static decimal Fee = 2m;
    public decimal Balance;

    public decimal NetBalance()
    {
        return Balance - Fee;   // instance method can read static
    }
}

class Program
{
    static void Main()
    {
        var a = new Account { Balance = 100m };
        Console.WriteLine("Net: " + a.NetBalance());
    }
}

Pattern dei contatori statici

Assegnare a ogni nuovo oggetto un id ottenuto da un contatore statico è un uso classico dei campi statici.

using System;

class Ticket
{
    private static int _next = 1;
    public int Number;

    public Ticket()
    {
        Number = _next++;
    }
}

class Program
{
    static void Main()
    {
        Console.WriteLine(new Ticket().Number);
        Console.WriteLine(new Ticket().Number);
        Console.WriteLine(new Ticket().Number);
    }
}

Metodi statici di utilità

I metodi statici sono ideali per le operazioni senza stato che dipendono solo dai propri input, come i formattatori e i convertitori.

using System;

class Format
{
    public static string Money(decimal amount)
    {
        return "$" + amount.ToString("0.00");
    }
}

class Program
{
    static void Main()
    {
        Console.WriteLine(Format.Money(12.5m));
    }
}

Chiamare metodi statici da metodi statici

I metodi statici possono chiamare liberamente altri metodi statici della stessa classe senza alcuna istanza.

using System;

class Geometry
{
    public static double CircleArea(double r) => Math.PI * Square(r);
    private static double Square(double x) => x * x;
}

class Program
{
    static void Main()
    {
        Console.WriteLine(Geometry.CircleArea(2).ToString("0.00"));
    }
}

I campi statici persistono

Un campo statico conserva il proprio valore per tutta la durata del programma, non solo per un singolo oggetto. Lo usi per le cache o per i totali progressivi.

using System;

class Logger
{
    public static int MessageCount;

    public static void Log(string msg)
    {
        MessageCount++;
        Console.WriteLine("[" + MessageCount + "] " + msg);
    }
}

class Program
{
    static void Main()
    {
        Logger.Log("start");
        Logger.Log("working");
        Logger.Log("done");
    }
}

Mettere tutto insieme

I membri statici rappresentano concetti validi per l'intera classe: tariffe condivise, contatori e utilità senza stato, mentre i membri di istanza contengono i dati specifici di ogni oggetto.

using System;

class Order
{
    public static decimal TaxRate = 0.10m;
    public decimal Subtotal;

    public decimal Total() => Subtotal + Subtotal * TaxRate;
}

class Program
{
    static void Main()
    {
        var o = new Order { Subtotal = 200m };
        Console.WriteLine("Total: " + o.Total());
    }
}

Verifica rapida

Metta alla prova la Sua comprensione dei membri statici.

Riepilogo

I membri statici appartengono alla classe e hanno una sola copia condivisa; i membri di istanza appartengono a ogni oggetto. I metodi statici non hanno this e non possono accedere ai dati di istanza, mentre il codice di istanza può leggere i membri statici. Usi i membri statici per contatori, configurazioni condivise e utilità senza stato.

using System;

class Demo
{
    public static int Shared;
    public int Own;
    public static void Bump() => Shared++;
}

class Program
{
    static void Main()
    {
        Demo.Bump();
        Demo.Bump();
        Console.WriteLine(Demo.Shared);
    }
}

Domande Frequenti

La lezione «Metodi e campi statici» è gratuita?

Sì — il testo completo di «Metodi e campi statici» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso C# Academy, passa a CoddyKit PRO. Il corso C# Academy include 4 lezioni in totale.

Cosa imparerò in «Metodi e campi statici»?

Definisca membri appartenenti direttamente al tipo. Eserciti C# Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare C# Academy?

Non è richiesta alcuna esperienza precedente. C# Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.

Quanto tempo richiede la lezione «Metodi e campi statici»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione C# Academy?

Sì. Ogni lezione C# Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Metodi e campi statici
  2. Classi statiche per le utilità
  3. Costanti e campi readonly
  4. Progettazione statica e di istanza
← Torna a C# Academy