statico o non statico?

2

Ad esempio, ho queste due classi:

Prima

public class Example
{
    public Example()
    {
    }

    public int ReturnSomething
    { 
      return 1;
    }
}

Secondo

public class Example
    {
        public Example()
        {
        }

        public static int ReturnSomething
        { 
          return 1;
        }
    }

Voglio usare il metodo ReturnSomething , quale delle due classi ha assegnato meno / più memoria? Quando uso

int x = Example.ReturnSomething;

o quando uso

Example object = new Example();
int x = object.ReturnSomething();
    
posta greggianbayocboc 29.05.2013 - 06:31
fonte

2 risposte

7

Se non usi l'oggetto all'interno di un metodo (cioè non hai this. ), rendilo statico. In .NET Framework, ad esempio, per essere conforme all'analisi del codice, in questo caso è necessario utilizzare lo statico (consultare regola CA1822: contrassegnare i membri come statici ).

Considera anche OOP affinché il tuo codice sia leggibile. Il metodo è inerente all'istanza dell'oggetto? È più appropriato solo per la classe, ma non per l'istanza? Il metodo è appropriato qui in primo luogo?

Nota: ci si aspetta che tu scriva il codice per gli umani, non per i computer. A meno che non lavori sull'hardware incorporato, scrivi il tuo codice tenendo in considerazione la leggibilità, non il consumo di memoria. Se invece ti trovi in un caso in cui ogni byte di memoria conta, profila l'applicazione per determinare quale di più i modi per risolvere il problema corrispondono ai requisiti non funzionali relativi al consumo di memoria.

    
risposta data 29.05.2013 - 07:00
fonte
3

MainMa ha fornito un'ottima risposta alla tua domanda inespressa ("Quale opzione dovrei scegliere"), ma, per completezza, ho pensato di rispondere alla tua domanda esplicita:

I want to use the ReturnSomething method, which of the two classes allocated less/more memory?

La tua seconda opzione alloca un po 'più di memoria. 12 byte , per essere precisi, se stai utilizzando un'applicazione x86 con .NET 4. Tuttavia, il tuo oggetto verrà raccolto come necessario (a meno che tu non faccia attivamente qualcosa per impedirlo), quindi questo diventa irrilevante a lungo termine (anche su dispositivi con limitazioni di memoria).

Se non hai una molto buona ragione per farlo, questa piccola quantità dovrebbe non influenzare la tua decisione. Ci sono sono ottimi motivi per scegliere l'opzione statica, ma questo non è uno di questi.

    
risposta data 29.05.2013 - 07:42
fonte

Leggi altre domande sui tag