Sobes.tech
Middle

C# programlamada transient nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

C# bağlamında, transient en çok nesnelerin serileştirme ve deserialize mekanizmalarıyla çalışırken karşımıza çıkar.

[NonSerialized] modifikatorü (veya DataContractSerializer kullanırken [IgnoreDataMember], veya Json.NET kullanırken [JsonIgnore]) bir sınıf alanını veya özelliğini işaretlemek için kullanılır ve bu alan veya özellik veri akışına dahil edilmemelidir.

Başka bir deyişle, böyle bir alan veya özellik "geçici" veya "ara" durumdadır ve değeri, nesneyi sıralı bir formata (örneğin, XML, JSON, ikili) dönüştürürken kaydedilmez. Nesne tekrar deserialize edildiğinde, bu alanlar/özellikler kendi türlerinin varsayılan değerleriyle başlatılır (örneğin, referans türleri için null, sayısal türler için 0, bool için false).

Kullanımın temel örnekleri:

  • Önbelleğe alınmış veya türetilmiş veriler, deserialize işleminden sonra yeniden hesaplanabilir.
  • İşletim sistemi kaynaklarına veya dış nesnelere referanslar, serialize edilemeyebilir.
  • Geçici durumlar veya ara hesaplamalar.

[NonSerialized] ile örnek:

using System;
using System.Runtime.Serialization;

[Serializable] // BinaryFormatter için gereklidir
public class Person
{
    public string Name { get; set; }

    [NonSerialized] // Bu alan serileştirme sırasında atlanacaktır
    public int Age;

    public Person(string name, int age)
    {
        Name = name;
        Age = age;
    }
}