Sobes.tech
Junior

Qual è la differenza tra un metodo statico e un metodo di istanza?

sobes.tech AI

Risposta dell'AI

Un metodo statico appartiene alla classe e viene chiamato senza creare un'istanza dell'oggetto. Il metodo di istanza appartiene a un'istanza della classe e viene chiamato tramite l'oggetto creato.

Principali differenze:

Criterio Metodo statico Metodo di istanza
Appartenenza Alla classe All'istanza della classe
Chiamata Tramite il nome della classe Tramite l'oggetto dell'istanza
Accesso ai dati Solo ai membri statici della classe Ai membri statici e ai dati dell'istanza
Parola chiave static Assente (di default)
using System;

public class MyClass
{
    // Campo statico
    public static string StaticData = "This is static data";

    // Campo di istanza
    public string InstanceData = "This is instance data";

    // Metodo statico
    public static void StaticMethod()
    {
        Console.WriteLine("Metodo statico chiamato.");
        Console.WriteLine(StaticData); // Accesso al campo statico
        // Console.WriteLine(InstanceData); // Errore: nessun accesso al campo di istanza
    }

    // Metodo di istanza
    public void InstanceMethod()
    {
        Console.WriteLine("Metodo di istanza chiamato.");
        Console.WriteLine(StaticData); // Accesso al campo statico
        Console.WriteLine(InstanceData); // Accesso al campo di istanza
    }
}

public class Program
{
    public static void Main(string[] args)
    {
        // Chiamata al metodo statico tramite il nome della classe
        MyClass.StaticMethod();

        // Creazione di un'istanza della classe
        MyClass myObject = new MyClass();

        // Chiamata al metodo di istanza tramite l'oggetto
        myObject.InstanceMethod();
    }
}