Statik Alanlar ve Metotlar
Coddy'nin C# Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 12 / 70.
Şu ana kadar oluşturduğumuz her alan ve metot, bireysel nesnelere aittir. Ancak bazen, tüm örnekler arasında paylaşılan ve sınıfın kendisine ait olan verilere veya davranışlara ihtiyaç duyarsınız. İşte burada static anahtar kelimesi devreye girer.
Bir statik alan, bir sınıfın tüm nesneleri tarafından paylaşılır. Kaç tane örnek oluşturursanız oluşturun, yalnızca tek bir kopya vardır:
public class Player
{
public static int TotalPlayers = 0;
public string Name { get; set; }
public Player(string name)
{
Name = name;
TotalPlayers++;
}
}Her yeni Player oluşturulduğunda, TotalPlayers artar. Tüm oyuncular bu aynı sayacı paylaşır.
Bir statik metot sınıfa aittir ve bir nesne oluşturulmadan çağrılabilir:
public class Calculator
{
public static int Add(int a, int b)
{
return a + b;
}
}
// Bir örnek üzerinde değil, sınıf üzerinde çağrılır
int result = Calculator.Add(5, 3);Statik üyelere bir nesne başvurusu kullanarak değil, sınıf adını kullanarak eriştiğinizi unutmayın. Statik metotlar, belirli bir nesneye ait olmadıkları için örnek alanlarına erişemez veya this kullanamaz.
Farkında olmadan statik üyeleri zaten kullandınız. Console.WriteLine() statik bir metottur ve Math.PI statik bir alandır.
Görev
KolayUygulamanız genelinde oluşturulan tüm siparişleri takip etmek için statik üyeleri kullanan bir sipariş takip sistemi oluşturalım.
Kodunuzu düzenlemek için iki dosya oluşturacaksınız:
Order.cs:Orderad alanında birOrderSystemsınıfı tanımlayın. Her siparişin bir örnek özelliği olarakOrderId(int) veCustomerName(string) bulunmalıdır. Sınıf ayrıca statik bir alan olanTotalOrdersile oluşturulan toplam sipariş sayısını takip etmeli ve kullanılabilir sonraki sipariş kimliğini (1'den başlayarak) döndüren statik birGetNextOrderId()yöntemi sağlamalıdır. Yapıcı, bir müşteri adını kabul etmeli, statik yöntemi kullanarak sipariş kimliğini otomatik olarak atamalı ve toplam sipariş sayacını artırmalıdır.Program.cs: Ana dosyanızda, girdiye göre siparişler oluşturun ve toplam sipariş sayısıyla birlikte ayrıntılarını görüntüleyin.
İki ayrı sipariş için müşteri adlarını temsil eden iki girdi alacaksınız.
Her sipariş için ayrıntılarını şu biçimde yazdırın:
Order #{OrderId} - Customer: {CustomerName}Her iki siparişi oluşturduktan sonra toplam sayıyı yazdırın:
Total Orders: {TotalOrders}Örneğin girdiler Alice ve Bob ise çıktı şu şekilde olmalıdır:
Order #1 - Customer: Alice
Order #2 - Customer: Bob
Total Orders: 2Kendin dene
using System;
using OrderSystem;
class Program
{
public static void Main(string[] args)
{
// Müşteri adlarını oku
string customer1 = Console.ReadLine();
string customer2 = Console.ReadLine();
// TODO: Müşteri adlarıyla iki Order nesnesi oluşturun
// TODO: Her siparişin ayrıntılarını şu formatta yazdırın:
// Order #{OrderId} - Customer: {CustomerName}
// TODO: Toplam sipariş sayısını şu formatta yazdırın:
// Total Orders: {TotalOrders}
}
}
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Nesne Yönelimli Programlama bölümündeki tüm dersler
1OOP Temelleri
Harici Dosyalarİsim Alanları ve YönergelerSınıf ve Nesnelere Giriş'this' Anahtar KelimesiMetotlar ve ParametrelerAlanlar ve ÖzelliklerYapıcı MetotlarNesne BaşlatıcılarÖzet - Basit Hesap Makinesi4Kalıtım
Temel Kalıtım (:) Sözdizimi'base' Anahtar KelimesiVirtual ve Override Anahtar KelimeleriSealed Sınıflar'object' Temel SınıfıÖzet - Çalışan Hiyerarşisi7İleri Düzey Özellikler
Operatör Aşırı Yüklemeİndeksleyiciler (this[])ToString() Geçersiz KılmaGenişletme MetotlarıÖzet - Özel Liste10Tasarım Kalıpları Bölüm 1
Tasarım Kalıplarına GirişThread-Safe SingletonFactory KalıbıObserver Kalıbı (Olaylar)Strategy Kalıbı2Özellikler ve Statik Üyeler
Otomatik Uygulanan ÖzelliklerSadece Okunur/Yazılır ÖzelliklerStatik Alanlar ve MetotlarStatik Sınıflarİfade Gövdeli Üyeler5Polimorfizm ve Arayüzler
Derleme vs Çalışma Zamanı PolimorfizmiArayüz vs Soyut SınıfÇoklu ArayüzlerBelirgin ArayüzlerUpcasting ve DowncastingÖzet - Şekil Hesaplayıcı8İleri Düzey OOP Kavramları
Kalıtım yerine KompozisyonGenerics (Sınıflar ve Metotlar)Delegates ve EventlerAttributes ve ReflectionIDisposable ve using İfadesiDependency Injection Temelleri11Tasarım Kalıpları Bölüm 2
Komut KalıbıAdaptör KalıbıDekoratör KalıbıŞablon Metot KalıbıDurum KalıbıKompozit Kalıbı3Sınıf Mimarisi
Örnek vs Statik Veri'readonly' ve 'const' Anahtar KelimeleriDestekleyici Alanlar (Backing Fields)Özet - Banka Hesabı Yöneticisi6Kapsülleme
Erişim BelirleyicilerKapsülleme için ÖzelliklerVeri Gizleme UygulamasıDeğişmezlik KalıplarıÖzet - Öğrenci KayıtlarıKendi başına pratik yap: Online C# derleyicisi