CodeBlanks Logo Icon CodeBlanks

Attribute temelleri

C# kursu · İleri seviye · Ders 49/83

[Attribute] ile meta veri eklemeyi öğrenirsin.

Attribute nedir?

Bir attribute, koda derleme zamanında veya çalışma zamanında okunabilen meta veri ekler. Köşeli parantez içinde yazılır ve bir sınıf, metot, özellik gibi öğenin önüne gelir: [Serializable] class Sample { }.

Attribute'lar kodun davranışını doğrudan değiştirmez; ancak derleyici, çalışma zamanı ve reflection onları okuyarak davranış belirler. Örneğin [Serializable] bir sınıfın serileştirilebildiğini bildirir; [Obsolete] bir metodu eski işaretler.

Attribute sözdizimi

Attribute'lar hedef öğeden önce köşeli parantez içinde yazılır. Örnek: [Obsolete("Use NewMethod")] void OldMethod() { }. Burada Obsolete attribute adı, "Use NewMethod" ise oluşturucu argümanıdır.

Attribute adının sonuna Attribute eki gelir (ör. ObsoleteAttribute); ancak kullanımda bu eki atabilirsin. Birden çok attribute virgülle veya ayrı satırlarda yazılabilir. Bazıları parametre alır, bazıları almaz.

Uygulama Serializable uygula ve denetle

Aşağıdaki Sample sınıfına [Serializable] attribute'unu ekle. Main içinde Type t = typeof(Sample); ile türü al ve Console.WriteLine(t.IsSerializable); ile sonucu yazdır.

Örnek çözümü göster
Sample sınıfının üzerine [Serializable] yaz. Main içine Type t = typeof(Sample); ve Console.WriteLine(t.IsSerializable); ekle.
Örnek çözüm:
using System;

[Serializable]
class Sample { }

class Program
{
    static void Main()
    {
        Type t = typeof(Sample);
        Console.WriteLine(t.IsSerializable);
    }
}

Kendini test et

  1. Attribute ne işe yarar?

    • Kodu daha hızlı çalıştırır
    • Bir metodu gizler
    • Koda meta veri ekler
    • Bir değişkeni sabit yapar
    Cevabı göster

    Koda meta veri ekler — Doğru. Attribute, koda meta veri ekler ve reflection ile okunabilir.

  2. Attribute kullanımını tamamla

    [____] class MyClass { }
    Cevabı göster
    [Serializable] class MyClass { }
  3. Attribute'ı hedefine eşle

    [Serializable]
    Sınıf
    [Obsolete]
    Eski metot
    [Conditional]
    Koşullu metot
    [XmlAttribute]
    Özellik

İleri seviye bölümündeki tüm dersler