C Referans veya Değer Nesneleri gönderme#
C# hep olmayan ilkel değişkenler referans ve ilkel değeri ile geçti geçti sanıyordum.
Olmayan herhangi bir nesne ilkel bir yöntem için geçen zaman, herhangi bir yöntem nesneye yapılan nesne geçirilen etkileyecektir. (C# 101 falan)
Ancak, bir Sistem geçtiğimde fark ettim.Çizim.Resim bu durum görünmüyor nesne? Eğer bir sistem geçersem.çizim.görüntü için başka bir yöntem nesne ve o nesnenin üzerine resim yükle, resimler orijinal nesne üzerinde yüklü değil o yöntem kapsam dışı bırak ve arama yöntemi dön?
Neden bu?
CEVAP
Nesneler. geçti değil mi Varsayılan olarak, bu bağımsız değişken değerlendirilmiş vedeğergeçti, aradığınız yöntemin parametre başlangıç değeri olarak değerine göre. Şimdi önemli nokta değeri referans tipleri - nesne almak için bir yol (veya null) için bir referans olduğunu. Bu nesne üzerinde değişiklik arayan görünür olacaktır. Ancak, bu parametrenin değeri farklı bir nesneye başvurmak için değiştirmedeğilvarsayılan değer, by pass kullanırken görünürtümtürleri.
Eğer referans olarak geçmek kullanmak istiyorsanız, sizegerekirparametre türü bir değer türü veya bir başvuru türü olup olmadığını out
ref
kullanın. Bu durumda, etkili bir değişken referans geçti kendisi, parametre, değişken ve arayan kişi tarafından görülen bir parametre için bir değişiklik olarak aynı depolama konumu kullanır.
Yani:
public void Foo(Image image)
{
// This change won't be seen by the caller: it's changing the value
// of the parameter.
image = Image.FromStream(...);
}
public void Foo(ref Image image)
{
// This change *will* be seen by the caller: it's changing the value
// of the parameter, but we're using pass by reference
image = Image.FromStream(...);
}
public void Foo(Image image)
{
// This change *will* be seen by the caller: it's changing the data
// within the object that the parameter value refers to.
image.RotateFlip(...);
}
article which goes into a lot more detail in this bir ben var. Temel olarak, "referans" anlamına gelmez ne anlama geliyor acaba. pas
/ İşlem () iç içe erişim nesneleri, Di...
Neden yeni bir Başlık yazın .Net 4.0 r...
Ne tür bir sızıntı otomatik referans O...
Geçersiz geri gönderme veya geri arama...
CSS px veya rem değer birimleri kullan...