c# - 指向未访问 set 关键字的属性的构造函数

标签 c# class properties set keyword

我只是在学习 C#,并试图进行一些与类一起工作的练习,而不是在 Main 中编写所有内容,因此我正在尝试编写一个 Hangman 控制台游戏。

我用这一行初始化猜测的字母:

Guess guess = new Guess(Console.ReadLine());

它指向Guess.cs文件中的这个构造函数:

public Guess(string guessString)
    {
        CurrentGuess = Convert.ToChar(guessString);
    }

CurrentGuess 引用此属性:

private char currentGuess

public char CurrentGuess
    {
        get
        {
            return currentGuess;
        }

        set
        {
            foreach (char letter in guessList)
            {
                if (letter == value)
                {
                    GuessedAlready = true;
                    break;
                }
            }

            if (GuessedAlready == false)
            {
                value = currentGuess;
                guessesMade++;
                guessList[guessesMade-1] = value;

            }
        }
    }

当我运行程序并输入字符值时,它没有设置为 currentGuess。 Visual Studio 还告诉我 currentGuess 永远不会被分配,并保持其当前值(空白)。

为什么 set 关键字不起作用?我一遍又一遍地沿着 currentGuess 的路径走,但我看不到它,所以我假设这是一个我还不知道的原因。

如有任何帮助,我们将不胜感激!

最佳答案

您必须在 setter 中交换此分配

value = currentGuess;

进入

currentGuess = value;

在set方法中,值是传入的参数。在您的情况下,您希望将该值存储在本地类变量 curtentGuess 中;

关于c# - 指向未访问 set 关键字的属性的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12656571/

相关文章:

c# - 简单的触摸控制

c# - 使用 Linq 仅获取页面所需记录的查询 - 未根据页面大小获取记录

java - 在Java中将整数列表拆分为2个长度大致相同的列表

ios - 从plist获取值的方法

c# - Linq 数据映射与 Ms Access 数据库 : "Missing semicolon (;) at end of SQL statement."

javascript - getElementsByClassName 并连续更改每个类

类中的 Java 对象不是 main

c# - 在 .NET 中获取 DLL 的详细信息

java - log4j2.properties 将记录器级别设置为许多包

c# - DbDataReader 错误 : Invalid attempt to call Read when reader is closed