Bu başlığı sadece C# olarak açmak istemedim, çünkü Java, C#, C++ gibi programlama dillerinde static metodlar vardır ve static olmaları ile olmamaları arasındaki fark aynıdır.
Statik bir metod (static) bir sınıftan üretilmiş olan tüm nesneler için paylaşılır. Bu da pratikte aslında bizim için şu anlama gelir, static metodları nesne yaratmadan doğrudan kullanabiliriz. Static olmayan metodları kullanabilmek için ise önce o sınıfa ait yeni bir nesne üretmemiz gerekir.
static olan ve olmayan iki metodun kullanımı arasındaki farkları şu örnekte görebilirsiniz.
- Araba sınıfının çalıştır metodu statik olsun, hızlan metodu ise statik olmasın. Bu durumda yeni bir araba nesnesi üretmeye gerek kalmadan araba çalıştırmak mümkün olacak, ama arabanın hizlan metodunu kullanabilmek için araba nesnesi oluşturmak zorunda olacağız.
using System;
namespace csharp
{
class Program
{
static void Main(string[] args)
{
Araba.Calistir();
//Araba.Hizlan(); hata
Araba araba = new Araba();
araba.Hizlan();
}
}
class Araba
{
public static void Calistir()
{
Console.WriteLine("araba çalıştı");
}
public void Hizlan()
{
Console.WriteLine("araba hızlandı");
}
}
}
Çıktı:
araba çalıştı
araba hızlandı
Not: Hizlan() metodunu yeni bir araba nesnesi oluşturmadan kullanırsak error CS0120: An object reference is required for the non-static field, method, or property 'Araba.Hizlan()' hatası alırız.
Önceki yazılarımdan bazıları için;
bkz: Metodlarda void ile return ifadeleri arasındaki fark nedir?
bkz: C# programlama dilinde metod tanımlamak ve metodu kullanmak
bkz: C# sabit (const) kullanımı ve örnekleri
bkz: C# Veri Tiplerinin Sınırlarını Görmek
bkz: C# String.Format Metodu Kullanımı ve Örnekleri
bkz: C# baştaki ve sondaki boşlukları silmek (trim)