Statik anahtar kelimeyi bir yönteme eklediğinizde ne anlama gelir?
public static void doSomething(){
//Well, do something!
}
static
Anahtar kelimeyi sınıfa ekleyebilir misiniz ? O zaman ne anlama geliyor?
Statik anahtar kelimeyi bir yönteme eklediğinizde ne anlama gelir?
public static void doSomething(){
//Well, do something!
}
static
Anahtar kelimeyi sınıfa ekleyebilir misiniz ? O zaman ne anlama geliyor?
Yanıtlar:
Bir static
işlev, normal ( örnek ) bir işlevin aksine , sınıfın bir örneğiyle ilişkili değildir.
Bir static
sınıf yalnızca içerebilen bir sınıftır static
örneklenemez bu nedenle kişi, ve.
Örneğin:
class SomeClass {
public int InstanceMethod() { return 1; }
public static int StaticMethod() { return 42; }
}
Aramak InstanceMethod
için sınıfın bir örneğine ihtiyacınız var:
SomeClass instance = new SomeClass();
instance.InstanceMethod(); //Fine
instance.StaticMethod(); //Won't compile
SomeClass.InstanceMethod(); //Won't compile
SomeClass.StaticMethod(); //Fine
Başka bir bakış açısından: Tek bir Dizede bazı değişiklikler yapmak istediğinizi düşünün. örneğin Harf büyük harfini yapmak istiyorsunuz. bu işlemler için "Araçlar" adında başka bir sınıf oluşturursunuz. "Tools" sınıfının bir örneğini oluşturmanın bir anlamı yoktur, çünkü bu sınıf içinde herhangi bir varlık yoktur ("Kişi" veya "Öğretmen" sınıfıyla karşılaştırın). Bu nedenle, herhangi bir örnek oluşturmadan "Tools" sınıfını kullanmak için static anahtar sözcük kullanıyoruz ve sınıf adından sonra noktaya ("Tools") bastığınızda istediğiniz yöntemlere erişebilirsiniz.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(Tools.ToUpperCase("Behnoud Sherafati"));
Console.ReadKey();
}
}
public static class Tools
{
public static string ToUpperCase(string str)
{
return str.ToUpper();
}
}
}
Sınıfın hiçbir örneği oluşturulmamış olsa bile, sınıfta statik yöntem, alan, özellik veya olay çağrılabilir. Sınıfın herhangi bir örneği oluşturulursa, statik üyeye erişmek için kullanılamazlar. Statik alanların ve olayların yalnızca bir kopyası vardır ve statik yöntemler ve özellikler yalnızca statik alanlara ve statik olaylara erişebilir. Statik üyeler genellikle nesne durumuna yanıt olarak değişmeyen verileri veya hesaplamaları temsil etmek için kullanılır; örneğin, bir matematik kütüphanesi sinüs ve kosinüsü hesaplamak için statik yöntemler içerebilir. Statik sınıf üyeleri, memenin dönüş türünden önce static anahtar sözcüğü kullanılarak bildirilir
Kısaca statik sınıfı başlatamazsınız: Örn:
static class myStaticClass
{
public static void someFunction()
{ /* */ }
}
Böyle yapamazsın:
myStaticClass msc = new myStaticClass(); // it will cause an error
Yalnızca şunları yapabilirsiniz:
myStaticClass.someFunction();
Statik anahtar kelime, bir sınıfa uygulandığında derleyiciye o sınıfın tek bir örneğini oluşturmasını söyler. Bu durumda sınıfın bir veya daha fazla örneğini 'yeni' yapmak mümkün değildir. Statik bir sınıftaki tüm yöntemlerin kendileri statik olarak bildirilmelidir.
Statik olmayan bir sınıfın statik yöntemlerine sahip olmak mümkündür ve çoğu zaman arzu edilir. Örneğin, başka bir sınıfın örneğini oluştururken fabrika yöntemi genellikle statik olarak bildirilir, çünkü bu, faktör yöntemini içeren sınıfın belirli bir örneğinin gerekli olmadığı anlamına gelir.
İyi bir açıklama için nasıl, ne zaman ve nerede olduğunu görmek MSDN'yi
static
sınıfın hiç örneği yoktur.