La maggior parte del tempo si eredita di System.Array
sta usando un'array monodimensionale. come:
int[] a1 = new int[2];
Quando si definisce int[]
questo modo implicito derivato da System.Array
tipo come @Sergey Rybalkin dice. In questo caso il metodo IndexOf
sarà sicuramente implementato al meglio come metodo di istanza e non come metodo statico.
Ma esiste un altro tipo che eredita da System.Array come matrici a più dimensioni. In questo caso (mult dimensione) il metodo IndexOf
non ha senso.
Verifica questo:
int[,] arr = new int[2, 2];
arr[0, 0] = 3; arr[1, 0] = 4;
arr[0, 1] = 5; arr[1, 1] = 6;
Array.IndexOf(arr, 4);
L'ultimo come lancia un RankException con il messaggio "Only single dimension arrays are supported here."
Forse, e molto probabilmente, a causa di che questo metodo è implementato come statica.
...
proposito il commento Is there a main principle behind the decision, whether to make a method static or not?
c'è, e il principio è abbastanza semplice. Il metodo di istanza rappresenta un'azione o un comportamento di un oggetto. Il metodo statico è una funzione del sistema che è legata alla logica della classe o, in alcuni casi, un metodo che si desidera chiamare senza creare un'istanza della classe.
Pensa al System.Math
classe come sarà il caos se hai bisogno di matematica di istanze ogni volta che vuoi chiamare un metodo come Sqrt
o Pow
?
L'ultimo esempio che vi darò è la classe System.Text.RegularExpressions.Regex
. Questa classe ha un metodo Match
implementato come istanza e un sovraccarico implementato come statico.
Ognuno viene utilizzato in un contesto diverso. L'istanza viene utilizzata quando si utilizza lo stesso pattern più volte. La statica quando si utilizza il modello un tempo unico nel codice.
(Ho rimosso il tag ASP.NET, perché la progettazione di 'Array' ecc non è correlata a ASP.NET) –
Vorrei stabilire che la maggior parte di essi sono statici perché sono pensati solo per gli array e i metodi di estensione non erano inventato al momento. – Romoku
@Romoku potrebbero ancora essere metodi di istanza, anche se –