Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Alan, bir sınıf veya yapı içinde doğrudan bildirilen herhangi bir türden değişkendir. Alanlar, kapsadıkları türlerin üyeleridir.
Bir sınıf veya yapı örnek alanlarına, statik alanlara veya her iki alana da sahip olabilir. Örnek alanları bir türün örneğine özeldir. örneği alanı T
olan bir sınıfınız F
varsa, türünde T
iki nesne oluşturabilir ve diğer nesnedeki değeri F
etkilemeden her nesnedeki değerini değiştirebilirsiniz. Buna karşılık, statik bir alan türün kendisine aittir ve bu türün tüm örnekleri arasında paylaşılır. Statik alana yalnızca tür adını kullanarak erişebilirsiniz. Statik alana bir örnek adıyla erişirseniz CS0176 derleme zamanı hatası alırsınız.
Genel olarak, private
veya protected
erişilebilirliğini alanlar için bildirmeniz gerekir. Türünüzün istemci koduna sunduğu veriler yöntemler, özellikler ve dizin oluşturucular aracılığıyla sağlanmalıdır. İç alanlara dolaylı erişim için bu yapıları kullanarak geçersiz giriş değerlerine karşı koruma sağlayabilirsiniz. Genel bir özellik tarafından kullanıma sunulan verileri depolayan özel alan, yedekleme deposu veya yedekleme alanı olarak adlandırılır. Alanları bildirebilirsiniz public
, ancak sonra türünüzü kullanan kodun bu alanı geçersiz bir değere ayarlamasını veya nesnenin verilerini başka bir şekilde değiştirmesini önleyemezsiniz.
Alanlar genellikle birden fazla tür yöntemi için erişilebilir olması ve tek bir yöntemin ömründen daha uzun süre depolanması gereken verileri depolar. Örneğin, takvim tarihini temsil eden bir tür üç tamsayı alanına sahip olabilir: ay için bir, gün için bir ve yıl için bir tane. Tek bir yöntemin kapsamı dışında kullanılmayan değişkenler, yöntem gövdesinde yerel değişkenler olarak bildirilmelidir.
Alanlar, erişim düzeyi ve ardından türü ve ardından alanın adı belirtilerek sınıf veya yapı bloğunda bildirilir. Örneğin:
public class CalendarEntry
{
// private field (Located near wrapping "Date" property).
private DateTime _date;
// Public property exposes _date field safely.
public DateTime Date
{
get
{
return _date;
}
set
{
// Set some reasonable boundaries for likely birth dates.
if (value.Year > 1900 && value.Year <= DateTime.Today.Year)
{
_date = value;
}
else
{
throw new ArgumentOutOfRangeException("Date");
}
}
}
// public field (Generally not recommended).
public string? Day;
// Public method also exposes _date field safely.
// Example call: birthday.SetDate("1975, 6, 30");
public void SetDate(string dateString)
{
DateTime dt = Convert.ToDateTime(dateString);
// Set some reasonable boundaries for likely birth dates.
if (dt.Year > 1900 && dt.Year <= DateTime.Today.Year)
{
_date = dt;
}
else
{
throw new ArgumentOutOfRangeException("dateString");
}
}
public TimeSpan GetTimeSpan(string dateString)
{
DateTime dt = Convert.ToDateTime(dateString);
if (dt.Ticks < _date.Ticks)
{
return _date - dt;
}
else
{
throw new ArgumentOutOfRangeException("dateString");
}
}
}
Bir örnekteki bir alana erişmek için, örnek adından sonra bir nokta ve ardından alan adını ekleyin, instancename._fieldName
örneğinde olduğu gibi. Örneğin:
CalendarEntry birthday = new CalendarEntry();
birthday.Day = "Saturday";
Alan bildirildiğinde atama işleci kullanılarak bir alana başlangıç değeri verilebilir.
Day
alanını otomatik olarak "Monday"
için atamak için, örneğin, aşağıdaki örnekte olduğu gibi Day
bildirebilirsiniz:
public class CalendarDateWithInitialization
{
public string Day = "Monday";
//...
}
Alanlar, nesne örneği için konstrüktör çağrılmadan hemen önce başlatılır. Eğer oluşturucu bir alanın değerini atarsa, bu değer alan bildirimi sırasında verilen herhangi bir değerin yerini alır. Daha fazla bilgi için bkz. Oluşturucuları Kullanma.
Uyarı
Alan başlatıcı diğer örnek alanlarına başvuramaz.
Alanlar public
, private
, protected
, internal
, protected internal
veya private protected
olarak işaretlenebilir. Bu erişim değiştiricileri, türdeki kullanıcıların alanlara nasıl erişebileceğini tanımlar. Daha fazla bilgi için bkz . Erişim Değiştiricileri.
Bir alan isteğe bağlı olarak bildirilebilir static
. Statik alanlar, türün hiçbir örneği olmasa bile çağrıda bulunanlar tarafından her zaman erişilebilir. Daha fazla bilgi için bkz . Statik Sınıflar ve Statik Sınıf Üyeleri.
Bir alan bildirilebilir readonly
. Salt okunur bir alana yalnızca başlatma sırasında veya oluşturucuda bir değer atanabilir. Bir static readonly
alan sabite benzer, ancak C# derleyicisinin derleme zamanında, yalnızca çalışma zamanında statik salt okunur bir alanın değerine erişimi yoktur. Daha fazla bilgi için bkz. Sabitler.
Bir alan bildirilebilir required
. Gerekli bir alan oluşturucu tarafından veya bir nesne oluşturulduğunda bir nesne başlatıcısı tarafından başlatılmalıdır. c0 özelliğini, gerekli tüm üyeleri başlatan herhangi bir oluşturucu bildirimine eklersiniz.
Aynı alanda required
değiştiricisi readonly
değiştiricisi ile birleştirilemez. Ancak özellik, yalnızca required
ve init
olabilir.
C# 12 ile başlayarak , Birincil oluşturucu parametreleri alanları bildirmeye alternatiftir. Türünüzün başlatma sırasında sağlanması gereken bağımlılıkları olduğunda, bu bağımlılıkları sağlayan bir birincil oluşturucu oluşturabilirsiniz. Bu parametreler, türlerinizdeki bildirilen alanlar yerine yakalanabilir ve kullanılabilir.
record
Türlerde, birincil oluşturucu parametreleri genel özellikler olarak ortaya çıkar.
C# dil belirtimi
Daha fazla bilgi edinmek için, bkz. C# Dil Belirtimi. Dil belirtimi, C# söz dizimi ve kullanımı için kesin kaynaktır.