C# Metod, class, arv
Hej.
Jobbar på ett "Bokhylleprogram" och vet inte hur jag ska ta mig vidare.
Programmet ger en krasch och refererar till get; set; koderna samt att jag lyckas inte få fram böckerna i case 2.
Någon som har lite råd till mig?
Är ganska ny på programmering så kanske något enkelt för den som är lite insatt.
Mvh
internal class Program
{
class Bok
{
public Bok(string Titel, string Författare, int Utgivning, string Genre)
{ }
public string Titel
{
get { return Titel; }
set { Titel = value; }
}
public string Författare
{
get { return Författare; }
set { Författare = value; }
}
public int Utgivning
{
get { return Utgivning; }
set { Utgivning = value; }
}
public string Genre;
{ get { return Genre; }
set { Genre = value; }
}
}
class Roman : Bok
{
public Roman(string Titel, string Författare, int Utgivning, string Genre)
: base(Titel, Författare, Utgivning, Genre)
{
Genre = "Roman";
}
}
class Tidsskrift : Bok
{
public Tidsskrift(string Titel, string Författare, int Utgivning, string Genre)
: base(Titel, Författare, Utgivning, Genre)
{
Genre = "Tidsskrift";
}
}
class Novellsamling : Bok
{
public Novellsamling(string Titel, string Författare, int Utgivning, string Genre)
: base(Titel, Författare, Utgivning, Genre)
{
Genre = "Novellsamling";
}
}
static void Main(string[] args)
{
bool menyBool = true;
List<Bok> BokHylla = new List<Bok>();
while (menyBool)
{
Console.Clear();
Console.WriteLine("\n\tVälkommen till Bokhyllan!");
Console.WriteLine("\n\t1) Registrera en ny bok.");
Console.WriteLine("\n\t2) Visa befinliga böcker.");
Console.WriteLine("\n\t3) Avsluta Program.");
// Sparar användarens val och förhindrar krasch.
Int32.TryParse(Console.ReadLine(), out int menyVal);
{
switch (menyVal)
{
case 1:
Console.Clear();
Console.WriteLine("\n\tAnge titel: ");
string _Titel = Console.ReadLine();
Console.WriteLine("\n\tAnge författare: ");
string _Författare = Console.ReadLine();
Console.WriteLine("\n\tAnge utgivningsår: ");
string utgivningsår = Console.ReadLine();
int _Utgivning = Convert.ToInt32(utgivningsår);
Console.WriteLine("\n\tVälj en bokgenre: " +
"\n\t1) Roman " + "\n\t2) Tidskrift " +
"\n\t3) Novellsamling ");
if (Int32.TryParse(Console.ReadLine(), out int genreVal))
{
if (genreVal == 1)
{ Roman nyRoman = new Roman
(_Titel, _Författare, _Utgivning, "Genre: Roman");
Console.WriteLine("\n\tTitel: " + _Titel);
Console.WriteLine("\n\tFörfattare: " + _Författare);
Console.WriteLine("\n\tUtgivningsdatum " + _Utgivning);
Console.WriteLine("\n\tGenre: Roman " + nyRoman.Genre);
BokHylla.Add(nyRoman);
}
else if (genreVal == 2)
{
Tidsskrift nyTidskrift = new Tidsskrift
(_Titel, _Författare, _Utgivning, "Genre: Tidsskrift");
Console.WriteLine("\n\tTitel: " + _Titel);
Console.WriteLine("\n\tFörfattare: " + _Författare);
Console.WriteLine("\n\tUtgivningsdatum: " + _Utgivning);
Console.WriteLine("\n\tTyp:Tidsskrift " + nyTidskrift.Genre);
BokHylla.Add(nyTidskrift);
}
else if (genreVal == 3)
{
Novellsamling nyNovell = new Novellsamling
(_Titel, _Författare, _Utgivning, "Genre: Novell");
Console.WriteLine("\n\tTitel: " + _Titel);
Console.WriteLine("\n\tFörfattare: " + _Författare);
Console.WriteLine("\n\tUtgivningsdatum: " + _Utgivning);
Console.WriteLine("\n\tGenre: Novell" + nyNovell.Genre);
BokHylla.Add(nyNovell);
}
}
else
{
Console.WriteLine("Välj siffra 1, 2 eller 3.");
Thread.Sleep(2000);
}
Console.ReadLine();
break;
case 2:
foreach (Bok item in BokHylla)
if (item == null)
{
Console.WriteLine("Det finns inga böcker registrerade");
}
else
{
Console.WriteLine("\n\tTitel: " + item.Titel);
Console.WriteLine("\n\tFörfattare: " + item.Författare);
Console.WriteLine("\n\tÅrtal: " + item.Utgivning);
Console.WriteLine("\n\tGenre: " + item.Genre + "\n\t");
}
Console.ReadLine();
break;
case 3:
{
Console.WriteLine("Tack för denna gång!");
Thread.Sleep(3000);
menyBool = false;
}
break;
default:
{
Console.WriteLine("Välj ett menyval 1, 2 eller 3.");
Thread.Sleep(2000);
}
break;
}}}}}}