Stackoverflowexception Hatası Nedeni ?
-
derleyip çalıştırınca ilk set yönteminde stackoverflowexception hatası alıyorum :s this sözcüğü gereksiz kullanılmış olabilir sonradan ekledim :s hata neden kaynaklanıyor acaba :s
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace odev3 { class Program { public int pay { set { this.pay = value; } get { return this.pay; } } public int payda { set { this.payda = value; } get { return this.payda; } } public Program(int pay1, int payda1) { pay = pay1; payda = payda1; } public static Program topla(Program sayi1, Program sayi2) // paydalar eşit ise normal toplama yapar değil ise paydaları eşitlemek için ortak payda işlemi yapar { if (sayi1.payda == sayi2.payda) { Program toplam = new Program((sayi2.pay + sayi1.pay), sayi1.payda); return toplam; } else { Program toplam = new Program((sayi1.pay * sayi2.payda) + (sayi2.pay * sayi1.payda), (sayi1.payda * sayi2.payda)); return toplam; } } public static Program cikart(Program sayi1, Program sayi2) { if (sayi1.payda == sayi2.payda) { Program kalan = new Program((sayi2.pay - sayi1.pay), sayi1.payda); return kalan; } else { Program kalan = new Program((sayi1.pay * sayi2.payda) - (sayi2.pay * sayi1.payda), (sayi1.payda * sayi2.payda)); return kalan; } } public static Program carp(Program sayi1, Program sayi2) { Program carpim = new Program((sayi1.pay * sayi2.pay), (sayi1.payda * sayi2.payda)); return carpim; } public static Program bol(Program sayi1, Program sayi2) { Program bolum = new Program((sayi1.pay * sayi2.payda), (sayi1.payda * sayi2.pay)); return bolum; } public static int karsilastir(Program sayi1, Program sayi2) { if ((sayi1.pay / sayi1.payda) == (sayi2.pay / sayi2.payda)) { return 0; } if ((sayi1.pay / sayi1.payda) > (sayi2.pay / sayi2.payda)) { return 1; } if ((sayi1.pay / sayi1.payda) < (sayi2.pay / sayi2.payda)) { return -1; } return 3; } static void Main(string[] args) { Console.Write("1. sayının pay'ını giriniz"); int pay1 = Convert.ToInt32(Console.ReadLine()); Console.Write("1.sayının payda'sını giriniz"); int payda1 = Convert.ToInt32(Console.ReadLine()); Console.Write("2. sayının pay'ını giriniz"); int pay2 = Convert.ToInt32(Console.ReadLine()); Console.Write("2.sayının payda'sını giriniz"); int payda2 = Convert.ToInt32(Console.ReadLine()); Program rasyonel1 = new Program(pay1, payda1); Program rasyonel2 = new Program(pay2, payda2); Program sonuc = topla (rasyonel1 , rasyonel2); Console.WriteLine("toplama işleminin sonucu = " + sonuc.pay + "/" + sonuc.payda); sonuc = cikart(rasyonel1, rasyonel2); Console.WriteLine("çıkarma işleminin sonucu = " + sonuc.pay + "/" + sonuc.payda); sonuc = carp(rasyonel1, rasyonel2); Console.WriteLine("çarpma işleminin sonucu = " + sonuc.pay + "/" + sonuc.payda); sonuc = bol(rasyonel1, rasyonel2); Console.WriteLine("bolme işleminin sonucu = " + sonuc.pay + "/" + sonuc.payda); Console.WriteLine("karşılastirma sonucu = " + karsilastir(rasyonel1 , rasyonel2)); Console.ReadKey(); } } } -
Program rasyonel1 =newProgram(pay1, payda1);Şuraya bi debug point koyup denedin mi ? adım adım git muhtemelen bi yerde recursive var kendini tekrarlıyordur
-
SinusX bunu yazdı:
-----------------------------Program rasyonel1 =newProgram(pay1, payda1);Şuraya bi debug point koyup denedin mi ? adım adım git muhtemelen bi yerde recursive var kendini tekrarlıyordur
-----------------------------get set i kaldırıp çalıştırınca çalışıyor ama bu haldeyken çalışmıyor hocam. set e ilk girdiğinde hatayı veriyor hemen.
-
property kullanımın hatalı bir kere hocam
private string _firstName; public string FirstName; { get { return this._firstName; } set { this._firstName = value } }Bu şekilde kullanman lazım public değişkenle value alıp privateyle class içinde kullanırsan problem olmaz.
bu şekle dönüştür tekrar dene haber bekliyorum :)
-
manglerman bunu yazdı:
-----------------------------property kullanımın hatalı bir kere hocam
private string _firstName; public string FirstName; { get { return this._firstName; } set { this._firstName = value } }Bu şekilde kullanman lazım public değişkenle value alıp privateyle class içinde kullanırsan problem olmaz.
bu şekle dönüştür tekrar dene haber bekliyorum :)
-----------------------------tamam hocam 0ldu şimdi eyvallah :d get set kullanımını da öğrenmiş oldum bu sayede :D çok sağol (:
-
reca ederiz:)
-
sLeymN bunu yazdı:
-----------------------------manglerman bunu yazdı:
-----------------------------property kullanımın hatalı bir kere hocam
private string _firstName; public string FirstName; { get { return this._firstName; } set { this._firstName = value } }Bu şekilde kullanman lazım public değişkenle value alıp privateyle class içinde kullanırsan problem olmaz.
bu şekle dönüştür tekrar dene haber bekliyorum :)
-----------------------------tamam hocam 0ldu şimdi eyvallah :d get set kullanımını da öğrenmiş oldum bu sayede :D çok sağol (:
-----------------------------Aklında bulunsun eğer get set içerisinde bi koşul filan koymayacaksan direk
public int Pay{ get; set; } yazabilirsin derledikten sonra senin yazdığına çevirir .net
dahada kısası prop yazıp tab a bas kendisi çıkar snippettan :)
