Ez a c# kód miért nem akar jó lenni ha egyszer úgy csinálom, ahogy a könyvben van?
Az a hibaüzi,hogy nincs nulla paraméteres konstruktor.
Azért nem csinálok nulla paraméterest mert a könyv szerint ha van paraméteres konstruktorom,akkor is használhatom az objektum inicializálót.
Vagy ezt úgy értheti,hogy használhatom az objektum inicializálót de paraméteres konstruktor mellett kell,hogy legyen nulla paraméteres is?
Itt a kód:
using System;
namespace PracticeConsoleApplication {
internal class Test {
private int a;
private int b;
internal Test(int a, int b): base()
{
this.a = a;
this.b = b;
}
internal int SetASetBAndGetAplusB {
get { return this.a + this.b; }
set {
this.a = value;
this.b = value;
}
}
}
internal class MainClass {
private MainClass(): base()
{}
public static void Main()
{
Test one = new Test() {
SetASetBAndGetAplusB = 10
};
Console.WriteLine(one.SetASetBAndGetAplusB);
Console.ReadKey();
}
}
}
"Vagy ezt úgy értheti,hogy használhatom az objektum inicializálót de paraméteres konstruktor mellett kell,hogy legyen nulla paraméteres is?"
Ha ez nem igaz,akkor mi lehet a baj?
Alighanem az lesz a gond, hogy nincs paraméter nélküli konstruktora a Test osztályodnak. De ha ez a tipped, miért nem próbálod ki?:)
Ami még furcsa számomra:
-tudtommal object initializer-nél nem kell (), azaz:
Test one = new Test {...} kéne (lehet, hogy tévedek, évek óta nem volt dolgom C#-pal)
-base() dolgokat felesleges kiírni
-property ilyen módon történő megvalósítása nem biztos, hogy célszerű (azt várná az ember, hogy ugyanazt kapja vissza, mint amit beállított, MS guideline szerint pedig törekedni kell a kiszámítható működésre property-knél)
Nem definiáltál paraméter nélküli konstruktort.
Van egy ilyened:
Test(int a, int b)
És létre akarsz hozni egy objektumot így:
Test one = new Test();
Vagy paraméterezd fel, vagy csinálj egy Test() konstruktort.
A megoldás magyarul:
Létrehoztál egy Test osztályt, hozzá egy konstruktort, ami két int típusú paramétert vár. Na most a konstruktor pont arra való, hogy amikor létrehozol egy objektumot az osztályodból, akkor azt úgy tedd meg, hogy ezeket a paramétereket oda is adod a létrejövő objektumnak.
Vagyis amit te Test one = new Test()-nek írtál, azt úgy kellene helyesen csinálni, hogy az osztály konstruktorának megfelelő legyen.
Tehát, Test one = new Test(a, b). Ahol az a és b egy-egy int típusú változó vagy konstans.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!