static void Main(string[] args) { int a = 10; Console.WriteLine(a); degertipi(a); Console.WriteLine(a);
} } }
____________________________
anladığım şey şu ilk başta mainden başlanılıyor daha sonra a değişkenine 10 değeri atanıp a değişkeni yazdırılıyor daha sonra degertipi metodunun içine 10 gönderiliyor ve daha sonra bu metod bi şey yapmıyor daha sonra aşağıdaki Console.WriteLine'da 3 satır önce atadığımız 10 değişkeni tekrar yazdırılıyor. bunu böyle anladım yanlış mı anlamışım ?
________________________________
bir de aşşağıda call by referance var bunuda nasıl anladığımı açıklayayım ona göre doğruysa doğru diyin yanlışsa beni düzeltin:
/* şimdi burada da a değişken dizisine string biçimde 10 ve 50 atanmış daha sonra 0 ıncı elamanı yazdırılmış daha sonra refaranstipi(a) olan yere a değişkenin adresi kopyalanmış daha sonra yukarıdaki referanstipi metodununa geçilip heap'te tutulan a[0] degerine "100" atanmış ve böylece alttaki yani main içindeki a[0] da değişmiş ve böylece ekrana 100 yazdırmış. doğru muyum ? */
DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.
Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.
aslında çok da ara vermedim ama her şeyi yapmaya çalışırken hiçbir şey yapamama oldu bende biraz ondan öğrendim diğerine geçtim biraz bundan öğrendim diğerine geçtim vs.. ama bundan sonra bir işi tamamlamadan diğerine geçmiyicem :D dedidiğinde haklısın bir şey diyemiyorum :( sen en iyisi bana call by value ve call by referance'ı öğret :D (c#ta tabi)
< Bu mesaj bu kişi tarafından değiştirildi deniz caliskan -- 2 Nisan 2017; 15:52:13 >
birincsinde 10 yazar çünkü değer tipi stack te tutuluyor sen deger'e 50 verince stack'te yeni bir açmış oluyorsun bunun a ile ilgisi yok ikinicisinde ise ilk başta a[0]= "10" atanmış daha sonra deger'e a atanmış yani adres kopyalanmış daha sonra deger[0]= 42 atanmış bu yüzden a[0]'da değişmiş diye biliyorum ama denemedim c#ta şuan :)
using System;
namespace ConsoleApplication16
{
class Program
{
static void degertipi(int deger)
{
deger = 50;
}
static void Main(string[] args)
{
int a = 10;
Console.WriteLine(a);
degertipi(a);
Console.WriteLine(a);
}
}
}
____________________________
anladığım şey şu ilk başta mainden başlanılıyor daha sonra a değişkenine 10 değeri atanıp a değişkeni yazdırılıyor daha sonra degertipi metodunun içine 10 gönderiliyor ve daha sonra bu metod bi şey yapmıyor daha sonra aşağıdaki Console.WriteLine'da 3 satır önce atadığımız 10 değişkeni tekrar yazdırılıyor. bunu böyle anladım yanlış mı anlamışım ?
________________________________
bir de aşşağıda call by referance var bunuda nasıl anladığımı açıklayayım ona göre doğruysa doğru diyin yanlışsa beni düzeltin:
using System;
namespace ConsoleApplication16
{
class Program
{
static void referanstipi(string[] Deger)
{
DEger[0] = "100";
}
static void Main(string[] args)
{
string[] a = {"10","50" };
Console.WriteLine(a[0]);
referanstipi(a);
Console.WriteLine(a[0]);
}
}
}
/* şimdi burada da a değişken dizisine string biçimde 10 ve 50 atanmış daha sonra 0 ıncı elamanı yazdırılmış daha sonra refaranstipi(a) olan yere a değişkenin adresi kopyalanmış daha sonra yukarıdaki referanstipi metodununa geçilip heap'te tutulan a[0] degerine "100" atanmış ve böylece alttaki yani main içindeki a[0] da değişmiş ve böylece ekrana 100 yazdırmış. doğru muyum ?
*/
DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.
Üye Ol Şimdi DeğilÜye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.
< Bu mesaj bu kişi tarafından değiştirildi deniz caliskan -- 2 Nisan 2017; 16:30:14 >