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

  • FrankJavCee

    FrankJavCee

    29 Kasım 2008
  • NikkoNantone

    NikkoNantone

    21 Kasım 2011
  • thewinekone

    thewinekone

    17 Aralık 2005