Eğer System.Array
arasında miras çoğu zaman tek bir boyut dizisi kullanıyor. gibi:
int[] a1 = new int[2];
Eğer int[]
tanımlamak bu örtük @Sergey Rybalkin gibi System.Array
türünden türetilmiş diyor. Bu durumda IndexOf
yöntemi kesinlikle bir yöntem olarak statik yöntem olarak değil, en iyi şekilde uygulanacaktır.
Ancak System.Array öğesinden çok boyutlu diziler gibi miras alan başka türler de var. Bu durumda (çoklu boyut) IndexOf
yöntemi mantıklı değildir.
Testi bu:
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);
gibi son çünkü bu yöntem statik olarak uygulandığını arasında, büyük olasılıkla Belki mesajın "Only single dimension arrays are supported here."
ile RankException atar ve. Yorumlarınız Is there a main principle behind the decision, whether to make a method static or not?
Hakkında
...
vardır ve prensip oldukça basit. Örnek yöntem, bir nesnenin bir eylemini veya davranışını temsil eder. Statik yöntem, sınıfla ilişkili mantıksal sistemin bir işlevi veya bazı durumlarda sınıfın bir örneğini oluşturmadan çağırmak istediğiniz bir yöntemdir.
Eğer örnek matematik Eğer Sqrt
veya Pow
gibi bir yöntem çağırmak istediğiniz her zaman gerekiyorsa karmaşa nasıl olacağını System.Math
sınıfta düşünüyorsunuz?
Size vereceğim son örnek, System.Text.RegularExpressions.Regex
sınıfıdır. Bu sınıf, örnek olarak uygulanan bir Match
yöntemine ve statik olarak uygulanan bir aşırı yüke sahiptir.
Her biri farklı bir bağlamda kullanılır. Örnek, aynı deseni birden çok kez kullandığınızda kullanılır. Kalıbı, kodunuzda benzersiz bir zaman kullandığınızda statiktir.
(ASP.NET etiketini kaldırdım çünkü Array türünün tasarımı ASP.NET ile ilgili değil) –
Yalnızca diziler ve uzantı yöntemleri için kullanılmadığı için bunların çoğunun statik olduğunu şart koştum o zaman icat edildi. – Romoku
@Romoku yine de örnek yöntemler olabilir, ancak –