SORU
3 Ocak 2012, Salı


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
3 Ocak 2012, Salı


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

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • HowtoDrawAndPaint

    HowtoDrawAnd

    24 EKİM 2010
  • Kevin Bruckert

    Kevin Brucke

    30 Aralık 2006
  • Tech4Geeks

    Tech4Geeks

    8 Ocak 2012