Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Wie benutze ich Konstruktoren und Parameter richtig?
cicero
myCSharp.de - Member



Dabei seit:
Beiträge: 3

Themenstarter:

Wie benutze ich Konstruktoren und Parameter richtig?

beantworten | zitieren | melden

Guten Tag, ich bin relativ in C# und habe davor C und C++ programmiert. Für mich neu ist das objektorienterte mit Class, Methoden und natürlich die Syntax. Ich möchte lediglich aus der Konsole eine Pokerhand mit den angegeben Werten Ass.Clubs und 8.Spades ausgeben. Ich bin verwirrt welche Übergabeparameter und welche Syntax von mir erwartet wird.
Die Fehler sind am unterstrichenen Code.


namespace Pokerblatt
{
    public enum VALUE
    {
        Two = 2, Three, Four, Five, Six, Seven, Eight, Nine, Ten, Jack, Queen, King, Ace
    }

    public enum SUIT
    {
        Spades, Hearts, Diamonds, Clubs
    }

    public struct Card
    {
        public Card(VALUE rang, SUIT farbe) : this()
        {
            Rang = rang;
            Farbe = farbe;
        }

        public VALUE Rang { get;  set; }
        public SUIT Farbe { get;  set; }
    }

    public class PokerHand 
    {

        public Card Spielerhand1 { get; set; }
        public Card Spielerhand2 { get; set; }
        public PokerHand(Card c1, Card c2)
        {
            Spielerhand1 = new Card { [u]VALUE.Ace, SUIT.Clubs[/u]};
            Spielerhand2 = new Card { [u]VALUE.Eight, SUIT.Spades[/u]};
            c1 = Spielerhand1;
            c2 = Spielerhand2;
          
        }

        static void Main(string[] args)
        {
            Console.WriteLine([u]PokerHand[/u]);
        }

//Vielen Dank für die Hilfe

Gruß cicero
private Nachricht | Beiträge des Benutzers
MrSparkle
myCSharp.de - Team

Avatar #avatar-2159.gif


Dabei seit:
Beiträge: 5961
Herkunft: Leipzig

beantworten | zitieren | melden

Bitte poste deinen Code nicht als Plain-Text und verwende Code-Tags [Hinweis] Wie poste ich richtig?

Ansonsten empfehle ich einen Blick in [FAQ] Wie finde ich den Einstieg in C#?
Weeks of programming can save you hours of planning
private Nachricht | Beiträge des Benutzers
JimStark
myCSharp.de - Member

Avatar #dOpLzh7hN1az1g0eGRc0.jpg


Dabei seit:
Beiträge: 225

beantworten | zitieren | melden

In der Main referenzierst du nur die Klasse.

Bzgl. dem unterstrichenen: How to initialize objects by using an object initializer (C# Programming Guide)
private Nachricht | Beiträge des Benutzers
cicero
myCSharp.de - Member



Dabei seit:
Beiträge: 3

Themenstarter:

beantworten | zitieren | melden

Danke für die Antwort. Habe mir das zum Herzen genommen und eben die ganze Zeit gelesen was mir weitergeholfen hat.

Jetzt habe ich lediglich das Problem der Übergabe des Enums an meinen Konstrukor und diesen ausgeben zu lassen. Da fehlt mir die nötige Erfahrung. Kann mir das jemand weiterhelfen?

Die Fehlermeldung am unterstrichenen Code ist: CS1503: Argument "2": Konvertierung von "int" in "PokerYT.SUI" nicht möglich.


namespace PokerYT
{
public enum SUIT
    {    HEARTS, SPADES,DIAMONDS,CLUBS
    }

    public enum VALUE
    {   TWO = 2, THREE, FOUR, FIVE, SIX, SEVEN,
        EIGHT, NINE, TEN, JACK, QUEEN, KING, ACE
    }

    public class Card
    {
        public SUIT MySuit;
        public VALUE MyValue;

        public Card(VALUE Wert, SUIT Farbe)
        {   MyValue = Wert;
            MySuit = Farbe;
        }

        public void WriteLine()
        {  Console.WriteLine("{0} + {1}", MyValue, MySuit);
        }

        public class PokerhandTest
        {
            public static void Main()
            {   Card ErsteHand = new Card([u]3, 3[/u]); 
                Card ZweiteHand = new Card([u]6, 2[/u]);

                ErsteHand.WriteLine();
                ZweiteHand.WriteLine();
            }}}
private Nachricht | Beiträge des Benutzers
cicero
myCSharp.de - Member



Dabei seit:
Beiträge: 3

Themenstarter:

beantworten | zitieren | melden

Der Fehler liegt hier leider wird der nicht im vorherigen Beitrag unterstrichen.


Card ErsteHand = new Card(3, 3);
 Card ZweiteHand = new Card(6, 2);

Die Werte für die Erste Hand und für die zweite Hand werden nicht erkannt.


private Nachricht | Beiträge des Benutzers
MrSparkle
myCSharp.de - Team

Avatar #avatar-2159.gif


Dabei seit:
Beiträge: 5961
Herkunft: Leipzig

beantworten | zitieren | melden

Zitat von cicero
Da fehlt mir die nötige Erfahrung.

Dir fehlen die Grundlagen, daher der Link auf den Artikel.
Zitat von cicero
Konvertierung von "int" in "PokerYT.SUI" nicht möglich.

Die Fehlermeldung ist doch relativ aussagekräftig: Du hast extra eine Enum dafür definiert, verwendest aber Integer-Werte.


Bitte lies dir mal die Grundlagen von C# durch. Du kannst nicht erwarten, daß dir das einfach so zufliegt...
Weeks of programming can save you hours of planning
private Nachricht | Beiträge des Benutzers
Wilfried
myCSharp.de - Member

Avatar #2TnJ7IKlYXgOor5sZSIA.jpg


Dabei seit:
Beiträge: 87
Herkunft: Radeberg

beantworten | zitieren | melden

C# Enumerations Type - Enum (tutorialsteacher.com)
Enum Klasse (System) | Microsoft Docs
-Wer lesen kann, ist klar im Vorteil
-Meistens sitzt der Fehler vorm Monitor
-"Geht nicht" ist keine Fehlermeldung !

GidF
private Nachricht | Beiträge des Benutzers
M.L.
myCSharp.de - Member



Dabei seit:
Beiträge: 249

beantworten | zitieren | melden

Zitat
Für mich neu ist das objektorienterte mit Class, Methoden und natürlich die Syntax.
Mit C/C++ - Hintergrund ist man auch mehr Freiheiten gewöhnt, die in C# so nicht auftreten (mit dem Hintergrund, dass das Framework potentiell gefährliche Dinge wie z.B. Speichermanipulationen nach Möglichkeit unterbindet). Weiterhin sollte man z.B. den internen Unterschied zwischen Klassen und Struct kennen, wissen wann "enum" statt "switch-case" eingesetzt wird.... Und mit dem jetzt neuen C# 9 unter .NET 5 wird "alter Ballast" der Vorgängerversionen abgeworfen, was es für Neulinge in punkto Studium von Tutorials auch nicht leichter (*) macht: C# 9.0: Top-level Statements. Or Should I Say: Hey, Where’s the Main Method?

(*)kurzgefasst soll neuerer Code potentielle Probleme der Vorgängerversionen addressieren, diese eleganter lösen oder komplett verhindern.
Goalkicker.com
DNC Magazine for .NET Developers,
Software is like cathedrals: first we build them, then we pray ;-)
private Nachricht | Beiträge des Benutzers
witte
myCSharp.de - Member



Dabei seit:
Beiträge: 966

beantworten | zitieren | melden

@M.L.: Dein Link ist fehlerhaft. Prüfe mal ob es an dir liegt, ansonsten muss das mit in den Thread Sammelthema Wünsche und Bugreports myCSharp.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von witte am .

Moderationshinweis von MrSparkle (03.02.2021 - 14:51:32):

Hab den Link angepaßt

private Nachricht | Beiträge des Benutzers