Resimler gönderiler için kullanışlıdır. Ancak mümkün olduğunca az ve / veya küçük resimler kullanmak gerekir.
Bilgisayardaki bir hata mesajı veya kodu resim olarak eklemek yerine kendisini
kopyalayıp yapıştırın.
Resimler gönderiler için kullanışlıdır. Ancak mümkün olduğunca az ve / veya küçük resimler kullanmak gerekir.
Bilgisayardaki bir hata mesajı veya kodu resim olarak eklemek yerine kendisini
kopyalayıp yapıştırın.
0
C#'da bir nesneyi nasıl klonlayabilirim?
Bazen oluşturduğum bir nesnenin ikizini oluşturmak gerekiyor. Bunu yeni bir örnek oluşturup özellikleri tek tek kopyalayarak yapıyorum. Ancak biraz karışık bir sınıfda hiç bir zaman tam olarak yapıp yapmadığımdan emin olamıyorum.
Kesin ve örneğin kullandığı nesnelerle beraber derin kopyalama yapan bir kod var mı?
Soran:12.04.16 13:12
misafir
0
Şuradan öğrendiğime göre
Code Project'de bulunan alttaki örnek
ICloneable arayüzünü kullanmadan yani her sınıfımızda bunu uygulamak zorunda kalmadan serileştirme yoluyla klonlama yapıyor. Biraz kısaltıp Türkçeleştirdim.
/// Nesneleri derin kopyalama yapan bir metod.
/// Koplamala için ikili serileştirmeyi (Binary Serialization) kullanır.
public static class ObjectCopier
{
public static T Clone<T>(T source)
{
// Serileştirilemeyen sınıfların örnekleri için hata döndür.
if (!typeof(T).IsSerializable)
{
throw new ArgumentException("Tip serileştirilebilir olmalıdır.", "source");
}
// null'u serileştirmeye çalışma, karşılığında tipin varsayılan
// değerini döndür.
if (Object.ReferenceEquals(source, null))
{
return default(T);
}
IFormatter formatter = new BinaryFormatter();
Stream stream = new MemoryStream();
using (stream)
{
formatter.Serialize(stream, source);
stream.Seek(0, SeekOrigin.Begin);
return (T)formatter.Deserialize(stream);
}
}
}
Kullanım örneği:
// abc metnini içeren bir StringBuilder oluştur ve klonla
StringBuilder sb = new StringBuilder("abc");
StringBuilder sbc = ObjectCopier.Clone<StringBuilder>(sb);
Console.WriteLine(sb.ToString());
Console.WriteLine(sbc.ToString());
Çıktı:
abc
abc
Cevabı seçen: 08.06.16 00:02
canora101,387p
4ü
cevapsitesi.com'a katkınızdan dolayı teşekkür ederiz. Cevap yazarken lütfen şunlara dikkat edin:
Cevabınız açık ve net olmalıdır. Varsa alıntılar, bağlantılar, resim veya program kodu eklemelisiniz.
Eğer soru hakkında görüş bildirecekseniz veya cevap haricinde başka bir şey söylemek istiyorsanız yorum olarak yazın.
Tartışma çıkaracak cevaplardan kaçının, hitabınıza dikkat edin, "Kardeşim", "Arkadaşım" gibi ifadeler kullanmayın.
Eleştirmeyin. Sadece bilginizi gösterin ve fikrinizi söyleyin.
Büyük harf kullanmaktan ve cümle kurmaktan çekinmeyin. :)
Buraya yeni bir soru yazmayın, "benim de şöyle bir sorunum var" gibi eklemeler yapmayın. Sorunuz varsa yeni soru ekleyin.
ÜSLUP
ve SAYGI çok önemlidir. İnsanlar cevabınızdan çok üslubunuza dikkat ederler.
Cevabı, bir cevabın veya sorunun yorumu olarak dönüştürmek için ilgili cevabı veya soruyu tıklayın. [
İptal ]