Interface funktioniert nicht.

  • C#

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von Kirohn.

    Interface funktioniert nicht.

    Hallo zusammen

    Ich habe in diesem Code ein Problem. Irgendwie möchte das mit dem Interface nicht klappen. Die Fehlermeldung ist:
    Spoiler anzeigen
    ​"Spiel" implementiert den Schnittstellenmember "ITennisScorer.playerAScores()" nicht. "Spiel.playerAScores()" ist nicht öffentlich und kann daher keinen Schnittstellenmember implementieren. [Tennis]

    Dieser ist nicht der einzige, sondern das gleiche passiert auch bei​playerBScores und ​getScores.
    Ich komme wirklich nicht weiter. Unten habe ich 2 Spoilers. Der erste ist der Klassencode, wo der Fehler auftritt und der 2. hat den Interface inbegriffen.


    Ich hoffe man kann mir helfen.
    Spoiler anzeigen

    C#-Quellcode

    1. ​namespace Spielen
    2. {
    3. using Tennis;
    4. public class Spiel : ITennisScorer
    5. {
    6. private string PlayerAPoints = "0";
    7. private string PlayerBPoints = "-0";
    8. void playerAScores()
    9. {
    10. switch (PlayerAPoints)
    11. {
    12. case "0":
    13. PlayerAPoints = "15";
    14. break;
    15. case "15":
    16. PlayerAPoints = "30";
    17. break;
    18. case "30":
    19. if (PlayerBPoints == "40")
    20. {
    21. PlayerAPoints = "Deuce";
    22. PlayerBPoints = "-Deuce";
    23. }
    24. else
    25. {
    26. PlayerAPoints = "40";
    27. }
    28. break;
    29. case "40":
    30. PlayerAPoints = "Game";
    31. break;
    32. case "Deuce":
    33. if (PlayerBPoints == "Advantage")
    34. {
    35. PlayerAPoints = "Deuce";
    36. PlayerBPoints = "-Duece";
    37. }
    38. else
    39. {
    40. PlayerAPoints = "Advantage";
    41. PlayerBPoints = "-Duece";
    42. }
    43. break;
    44. case "Advantage":
    45. PlayerAPoints = "Game";
    46. break;
    47. default:
    48. break;
    49. }
    50. }
    51. void playerBScores()
    52. {
    53. switch (PlayerBPoints)
    54. {
    55. case "0":
    56. PlayerBPoints = "-15";
    57. break;
    58. case "15":
    59. PlayerBPoints = "-30";
    60. break;
    61. case "30":
    62. if (PlayerAPoints == "40")
    63. {
    64. PlayerBPoints = "-Deuce";
    65. PlayerAPoints = "Deuce";
    66. }
    67. else
    68. {
    69. PlayerBPoints = "-40";
    70. }
    71. break;
    72. case "40":
    73. PlayerBPoints = "-Game";
    74. break;
    75. case "Deuce":
    76. if (PlayerAPoints == "Advantage")
    77. {
    78. PlayerBPoints = "-Deuce";
    79. PlayerAPoints = "Duece";
    80. }
    81. else
    82. {
    83. PlayerBPoints = "-Advantage";
    84. PlayerAPoints = "Duece";
    85. }
    86. break;
    87. case "Advantage":
    88. PlayerBPoints = "-Game";
    89. break;
    90. default:
    91. break;
    92. }
    93. }
    94. string getScore()
    95. {
    96. string text = PlayerAPoints + PlayerBPoints;
    97. return text;
    98. }
    99. }
    100. }


    Spoiler anzeigen

    C#-Quellcode

    1. ​namespace Tennis
    2. {
    3. public interface ITennisScorer
    4. {
    5. void playerAScores();
    6. void playerBScores();
    7. string getScore();
    8. }
    9. }
    Mach die Subs/void-methods mal probeweise public
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    @VaporiZed Jou, Interface-Prozeduren müssen public sein.
    @Kirohn Rechter Mausklick auf ITennisScorer und von der IDE das Interface implementieren lassen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Kirohn schrieb:

    Geht nicht. Es gibt keine Vorschläge.
    Bei mir schon:


    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Kirohn schrieb:

    Visual Studio Code
    Dann solltest Du den Editor wechseln.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Dann eben manuell ändern. Ist ja auch egal. Aber wenn das Interface Public vorgibt, muss die implementierende Klasse den Vorgaben folgen.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.