static void Main(string[] args) { //Console.WriteLine("Hello World!"); //int sayi1 = 10; //int sayi2 = 30; //sayi1 = sayi2; //sayi2 = 65; ////sayi1??? //int, decimal,float,enum,boolean yani sayısal değerler value types = DEĞER TİPLERİ //int[] sayilar1 = new int[] { 10, 20, 30 }; //int[] sayilar2 = new int[] { 100, 200, 300 }; //sayilar1 = sayilar2; //sayilar2[0] = 999; ////sayilar1????? ////array ler class lar interface ler REFERANS TİPLERİDİR = reference types sayilar1in adresi = sayilar2nin adresidir diyoruz. Person person1 = new Person(); Person person2 = new Person(); person1.FirstName = "Engin"; person2 = person1; // Değer eşitlemesi değil, adres eşitlemesi yapıyoruz. person1.FirstName = "Müyesser"; Console.WriteLine(person2.FirstName); // Müyesser yazacaktır. Customer customer = new Customer(); customer.FirstName = "Salih"; customer.CreditCardNumber = "545455"; Employee employee = new Employee(); employee.FirstName = "Veli"; Person person3 = customer; // customer.FirstName = "Ahmet"; Console.WriteLine(person3.FirstName); //customer = employee; // çalışmaz. customer a employee ı atayamazsın farklı türler. //Console.WriteLine(((Customer)person3).CreditCardNumber); PersonManager personManager = new PersonManager(); personManager.Add(customer); }
static void Main(string[] args) { //int,decimal,float,enum,boolean value types int sayı1 = 10; int sayı2 = 30; sayı1 = sayı2; sayı2 = 65; //sayı1=30 //arrays, class, interface.. reference types int[] sayılar1 = new int[] { 1, 2, 3 }; int[] sayılar2 = new int[] { 10, 20, 30 }; sayılar1 = sayılar2; sayılar2[0] = 1000; //sayilar1[0]=1000 //-------------------------------------------// Person person1 = new Person(); Person person2 = new Person(); person1.FirstName = "Beyza"; person2 = person1; person1.FirstName = "Derin"; Console.WriteLine(person2.FirstName); Customer customer = new Customer(); customer.FirstName = "Merve"; customer.CreditCardNumber = "3448992919"; Employee employee = new Employee(); employee.FirstName = "Gizem"; Person person3 = customer; Console.WriteLine(person3.FirstName); Console.WriteLine(((Customer)person3).CreditCardNumber); PersonManager personManager = new PersonManager(); personManager.Add(employee); }
static void Main(string[] args) { //Console.WriteLine("Hello World!"); // int sayi1 = 10; // int sayi2 = 30; // sayi1 = sayi2; // sayi2 = 65; //sayi1= ? 30 olur // int[] sayilar1 = new int[] { 10, 20, 30 }; // int[] sayilar2 = new int[] { 100, 200, 300 }; //sayilar1 = sayilar2; //sayilar2[0] = 999; //sayilar1[0]= ? 999 olur. //int,decimali float doun-ble bool= değer tip sadece değeri kopyalar ve ilişki biter olay değer ile ilgilidir. //array , class, interface -> referans tiptir. //stack değer tip olanlar burda gerçekleşir //heap //sayi1 =30 sayi1 değeri 30 dur diye okunur . //stack //heap // 101/sayilar1 tanımlanır new dediğn zamna heapte yer açılır ----------> 101/ [10,20,30] // 102/sayilar2 --------------> 102/[100,200,300] //ikisi de referans tip olduğu için adrsi kopyalar yani adres atar // 102 n referans numarasını 101 referansı yerine atanır. // ve artık sayilar1 adresi referansi 102dir ve 101 referanslı arrrayı kimse tutmuyor ve garbage collection ile silinir bellekten. //Console.WriteLine('Sayilar[0]='+sayilar1[0]); Person person1=new Person(); Person person2=new Person(); person1.FirstName="Emine"; person2=person1; person1.FirstName="Zeynep"; //Console.WriteLine(person2.FirstName); Customer customer=new Customer(); customer.FirstName="ümit"; customer.CreditCardNumber="1234567890"; Employee employee=new Employee(); employee.FirstName="ela"; Person person3=customer; customer.FirstName="tuğba"; // Console.Writeline(((Customer)person3).CreditCardNumber); PersonManager.Add(employee); }
static void Main(string[] args) { //Console.WriteLine("Hello World!"); //int sayi1 = 10; //int sayi2 = 30; //sayi1 = sayi2; //sayi2 = 65; //Console.WriteLine(sayi1); //30 //int[] sayilar1 = new int[] { 10, 20, 30 }; //int[] sayilar2 = new int[] { 100, 200, 300 }; //sayilar1 = sayilar2; //sayilar2[0] = 999; //Console.WriteLine("Sayılar1[0] = "+sayilar1[0]); //999 //Değer tipler: int,decimal,float,double,bool //Referans tipler: array,class,interface Person person1 = new Person(); Person person2 = new Person(); person1.FirstName = "Engin"; person2 = person1; person1.FirstName = "Derin"; Console.WriteLine(person2.FirstName); Customer customer = new Customer(); customer.FirstName = "Salih"; customer.CreditCardNumber = "1234567890"; Employee employee = new Employee(); employee.FirstName = "Veli"; Person person3 = customer; customer.FirstName = "Ahmet"; Console.WriteLine(person3.FirstName); //Console.WriteLine(((Customer)person3).CreditCardNumber); PersonManager personManager = new PersonManager(); personManager.Add(employee); }
static void Main(string[] args) { int sayi1 = 10; int sayi2 = 30; sayi1 = sayi2; sayi2 = 65; //sayi1 nedir? 30 //int decimal float double bool değertip Console.WriteLine(sayi1); int[] sayilar1 = new int[] { 10, 20, 30 }; int[] sayilar2 = new int[] { 15, 25, 35 }; sayilar1 = sayilar2; sayilar1[0] = 99; //sayilar1[0] elemanı nedir? 99 referans olduğundan //array,class, interface ler referans tiplerdir. Console.WriteLine(sayilar1[0]); Console.WriteLine("------------------"); Person person1 = new Person(); Person person2 = new Person(); person1.FirstName = "Helen"; person2 = person1; person1.FirstName = "Ayten"; Console.WriteLine(person2.FirstName); person2.FirstName = "Derin"; Console.WriteLine(person1.FirstName); Customer customer = new Customer(); customer.FirstName = "Arzu"; customer.CreditCardNumber = "12345"; Employee employee = new Employee(); employee.FirstName = "Eda"; Person person3 = customer; Console.WriteLine(person3.FirstName); Console.WriteLine(((Customer)person3).CreditCardNumber); PersonManager personManager = new PersonManager(); personManager.Add(employee); }
static void Main(string[] args) { Console.WriteLine("Hello World!"); int sayi1 = 10; int sayi2 = 65; sayi1 = sayi2; sayi2 = 65; // sayi1 kaç ? 30 int[] sayilar1 = new int[] { 10, 20, 30 }; int[] sayilar2 = new int[] { 100, 200, 300 }; sayilar1 = sayilar2; sayilar2[0] = 999; // sayilar[0] ? 999 // int, string, double,float,bool -> değer tip // array, class, interface -> referans tip Person person1 = new Person(); Person person2 = new Person(); person1.FirstName = "Engin"; person2 = person1; person1.FirstName = "Seda"; Customer customer = new Customer(); customer.FirstName = "Salih"; Employee employee = new Employee(); Person person3 = customer; //person3. dediğimizde creditcarta erişemiyoruz ///çünkü person classı içerisinde öyle bir değerimiz yok. ///creditcardnumber değerine eişmek için Customer class'ına boxing yapıyoruz. Console.WriteLine(((Customer)person3).CreditCardNumber); PersonManager personManager = new PersonManager(); personManager.Add(employee); }
static void Main(string[] args) { Console.WriteLine("Hello World!"); int sayi1 = 10; int sayi2 = 30; sayi1 = sayi2; sayi2 = 65; //sayi1?? 30 int[] sayilar1 = new int[] { 10, 20, 30 }; int[] sayilar2 = new int[] { 100, 200, 300 }; sayilar1 = sayilar2; sayilar2[0] = 999; //sayilar1[0]=? 999 //değer tipleri: int, decimal, flood, double, bool(0,1 tutar)... //sayılsal görüntüler. //referans tip: array, class, interface //bellekte stack ve heap bölümleri var //değer tipleri stackte gerçekleşir. sayi1=10 dediğinde orada gerceklesir //sayi1 in değeri 10 diye okuruz //sayi1 in değeri sayi2nin değeridir. sayi2'nin kendisiyle alakası yokk //sadece değeriyle alakası var //peki referans tipler //new demek belleğin heap bölümünde bir adres(refrans no) oluştur //örneğin 17 ve 18. satıda sayilar1'in referans nosu 101, sayılar2nin 102 //sayılar1'in referans numarası sayılar2'nin referans numarasına eşittir //sayilar1'in yeni referans nosu 102 //c gibi dillerde pointer olarak karsımıza cıkar //peki 101. adrese ne oldu. - silindi! //deneme 1234 ////////////////////////////////////////////////////////// Person personel1 = new Person(); Person personel2 = new Person(); personel1.Name = "A"; personel2 = personel1; //personel2'nin referans numrasını(adresi) personel1 ile aynı Console.WriteLine("Personel 2'nin ismi: " + personel2.Name); //Cıktı : A Customer customer = new Customer(); customer.Name = "XYZ"; Person person3 = customer; // Customer = Employee; bunları hop atayamazsınız. int ile string gibi //peki az önce Customer = Employee'yi birbirine atayamıyorken neden person3 = customer atayabildim ? Cevap: Customer Persondan miras almıstır. Person miras verdiği için referans alabilir. //Base sınıfına(Personel), yavru sınıflardan(Alt sınıf, kalıtım yoluyla atanan sınıf vs) referans atayabilirsiniz Console.WriteLine(person3.Name); //person class'i miras alan sınıfların adresini tutabilir. ---- asagıdaki personmanager class'indan görebilirsiniz Employee employee1 = new Employee(); employee1.Name = "Erhan"; PersonManager personManager = new PersonManager(); personManager.Add(employee1); //Parametresi Person olan metoda employee sınıfından nesne gönderdik. }
static void Main(string[] args) { int sayi1 = 10; // sayi1 in DEĞERİ 10 int sayi2 = 30; // sayi2 in DEĞERİ 30 sayi1 = sayi2; // sayi1 in değeri = sayi2 nin değeri => yani sadece değeri. sayi2 ile bir alakamız yok. yani sayi1 kendi değerini kendi değiştirebilir. sayi2 = 65; // sayi1, sayi2 nin o anki değerine eşitlendi(yukarıda). sayi1 bu işlemden etkilenmez. // sayi1 = 30 int[] sayilar1 = new int[] { 10, 20, 30 }; int[] sayilar2 = new int[] { 100, 200, 300 }; int[] sayilar3 = new int[0]; // sıfır elemanlı bir array tanımlamış oldum int[] sayilar4; // referans numarası tutmayan sadece stack kısmında oluşturulmuş bir array, new lemek veya referansını tutabileceği bir değere eşitlenmelidir. sayilar1 = sayilar2; // sayi1, sayi2 nin adres bilgisini alıyor. ve böylelikle sayi1 için eski adresi silinir tabi adrste tutulan bilgilerle beraber => {10 ,20, 30} sayilar2[0] = 999; // sayilar1[0] = 999 // aynı adres bilgilerini almalarından dolayı değişikler sayi1 ve sayi2 içinde aynı gerçekleşir. // sayilar2[1] = 200 // int, decimal, float, double, bool = değer tip = anlık olarak eşitleme gerçekleşiyor. => STACK // array(dizi), class, interpace = referans tip = adresleme gerçekleşiyor. yani adresler eşitleniyor. => HEAP Person person1 = new Person(); Person person2 = new Person(); person1.FirtName = "Yiğit"; person2 = person1; // referance tip. person2 ninde FirstName i Yiğit olur. person2 artık person1 in adres bilgisini tutuyor. person1.FirtName = "Derin"; // person1 ve person2 içinde FirstName değeri Derin olarak değişir.(adreslemeden dolayı) Console.WriteLine(person2.FirtName); Customer customer = new Customer(); customer.FirtName = "Pınar"; customer.CreditCardNumber = "1234567890"; Employee employee = new Employee(); employee.FirtName = "Veli"; // customer = employee aynı türde olmayan ifadeleri birbirine eşitleyemezsin int = string yapamadığın gibi Person person3 = customer; // burda problem çıkmadı. çünkü aşağıda Costumer aynı zamanda bir Person demiştik. adres eşitlemesi yaptık. Console.WriteLine(person3.FirtName); // Boxing Console.WriteLine(((Customer)person3).CreditCardNumber); // person3 üzerinden kart bilgisine ulaşmamın sağladı. Belirtilen tip(Customer) çerçevesinde boxing yapıldı. PersonManager personManager = new PersonManager(); // add fonksiyonuna üç tipte veriyi gönderebiliyorum. personManager.Add(person3); personManager.Add(customer); personManager.Add(employee); }