< Hasscript />
popular Tags
Java #297 Genel Kavramlar #295 Veri Tabanı #220 oracle #84 Sunucular #81
→ View All Tags
top Authors
kenan 485 tolgacelik.art 341 kupanintorunu 49 canonka 36 buzel 32
→ View All Authors
→ Tags
popular Tags
#Java #Genel Kavramlar #Veri Tabanı #oracle #Sunucular
→ Authors
top Authors
@kenan @tolgacelik.art @kupanintorunu @canonka @buzel
/**
* @author kenan
* @date 2016-12-02
* @tags Genel Kavramlar, pass-by-value
*/

question Pass by value nedir?

comments 2 references
  1. // @author yavuz | 6 Aralık 2016

    c# için konuşmak gerekirse arg değişkenin olsun. bunu metoda aynen geçirdiğinde “pass by value” yani sadee değeri geçer. iki farklı değişken olarak düşünmek gerekir. 4’ün karesi 16’dır ancak işlemden sonra değişkenimiz “4” olarak kalır. ref parametresi ile geçirilirse değişkenin değeri arg 16 olarak çıkar.

    bool, byte, char, decimal, double, enum, float, int, long, sbyte, short, struct, uint, ulong, ushort tipleri otomatik value type’tır. 

    class, interface delegate, dynamic, object, string reference type’tır.

    class Program
            {
                static void Main(string[] args)
                {
                    int arg;

                    // Passing by value.
                    // The value of arg in Main is not changed.
                    arg = 4;
                    squareVal(arg);
                    Console.WriteLine(arg);
                    // Output: 4

                    // Passing by reference.
                    // The value of arg in Main is changed.
                    arg = 4;
                    squareRef(ref arg);
                    Console.WriteLine(arg);
                    // Output: 16 
                }

                static void squareVal(int valParameter)
                {
                    valParameter *= valParameter;
                }

                // Passing by reference
                static void squareRef(ref int refParameter)
                {
                    refParameter *= refParameter;
                }
            }

    ancak bizim değişkenimiz reference type ise ortalık biraz karışabilir. çünkü bir “x” değişkeninin değerini değiştirmekle onun tuttuğu nesnenin içeriğini değiştirmek aynı şey değildir.
    Şimdi javascript’e geçelim. alttaki fonksiyonları test ettiğimizde changeObject’ten çıktıktan sonra x’in aynı kaldığı görülecektir. çünkü içerdeki x artık farklı bir objeye dönüştü. 
    Ancak changeMember fonksiyonu x’in gösterdiği objeyi manipüle etmektedir. dolayısıyla bizim output’umuzu direkt olarak etkileyecektir.

    function changeObject(x) {
    x = {member:”bar”};
    alert(“in changeObject: ” + x.member);
    }

    function changeMember(x) {
    x.member = “bar”;
     alert(“in changeMember: ” + x.member);
     }
    var x = {member:”foo”};
     alert(“before changeObject: ” + x.member);
     changeObject(x);
    alert(“after changeObject: ” + x.member); /* değişim olmaz */
    alert(“before changeMember: ” + x.member);
    changeMember(x);
    alert(“after changeMember: ” + x.member); /* değişim kalıcı oldu */

  2. // @author kenan | 7 Aralık 2016

    Ben de kısa bir cevap vereyim. 

    Bir fonksiyona değer geçileceği zaman değişkenin içindeki değerin geçilmesi, değişkeni olduğu gibi göndermemektir. Yani kare fonksiyonu bir parametre aldığı zaman fonksiyonun içinde parametreyi değiştirsek bile dışındaki değerin değişmemesidir.

    mesela javascript örneği verelim;

    var x = 5;
    function kare(a) {  
      var t = a * a;
      a = 10; // buradaki a değeri 10 oldu. Fonksiyonun dışındaki x değeri hala 5
      return t;
    }
    var y = kare(x); // y = 25 olacaktır, ama x yine 5 kalacaktır. 

// Comments are closed.

// Hasscript © 2026
// Powered by Coffee & Code