【问题标题】:CS1061: Type `string' does not contain a definition for `classChoice' and no extension method `classChoice' [closed]CS1061:“字符串”类型不包含“classChoice”的定义,并且没有扩展方法“classChoice”[关闭]
【发布时间】:2019-07-21 17:38:48
【问题描述】:

我正在尝试将字符串 classChoice 的值返回到一个单独的类,以便我可以返回该人的选择,我仍在学习 C# 并试图更好地理解这一点我读到它需要一个实例才能工作所以我创建了 1,无论哪种方式,我已经尝试了大约 8 种不同的方法,并且都不断返回错误,我做错了什么?

使它无效并失败,取出参数并尝试仅调用属性,在主cs中的cs文件之外尝试它仍然没有运气。

public class Selection
{

    public string CharSel(string classChoice = "")
    {

        Console.WriteLine("Welcome to the world of Text Games!");

        Console.WriteLine("To begin you must select a class!");

        Console.WriteLine("Lucky for you there is only 1 class to choose from at this time :-) ");

        Console.WriteLine("Select a Class:");
        Console.WriteLine("1. Wizard");
        Console.WriteLine("2. Nothing");
        Console.WriteLine("3. Nothing");
        Console.WriteLine("4. Nothing");
        Console.WriteLine("5. Nothing");

        Console.Write("Make your selection: ");

        int choice = Convert.ToInt32(Console.ReadLine());

        if (choice == 1)
        {
            classChoice = "Wizard";
            Console.WriteLine("Congrats on selecting {0} now onto your adventure!", classChoice);
        }
        return classChoice;
    }
}

public class Character
{
    public static string Wizard(string name)
    {
        Selection s = new Selection();

        string classChosen = s.CharSel().classChoice;
        Console.WriteLine("Test, You are a {0}", classChosen);
        name = "none yet";
        return name;
    }
}

控制台应该吐出来

Test, You are a Wizard

【问题讨论】:

  • 尽我所能,CharSel 是一个方法而不是一个类,所以s.CharSel().classChoice; 失败,因为方法没有属性(而且唯一可行的方法是它是静态的) .你想多了:CharSel 返回一个代表选择的字符串,使用它。
  • 你需要一个选择实例:Selection selection = new Selection(); string classChoice = selection.CharSel("abc");
  • @ŇɏssaPøngjǣrdenlarp 它作为一个静态也失败了我真的在敲我的头你可能是对的我想多了。
  • @jdweng isnt Selection s = new Selection();同样的事情?并且字符串类 Chosen 是 s.CharSel().classChoice 不应该返回之前选择的选项吗?
  • 你想多了: CharSel 返回一个代表选择的字符串,使用它。

标签: c# class methods instance


【解决方案1】:

你的程序出现语法错误就行了:

string classChosen = s.CharSel().classChoice;

应该是:

string classChosen = s.CharSel();

【讨论】:

    【解决方案2】:

    CharSel() 是一个返回包含用户选择的值的string 的方法。

    您在方法的末尾返回了string,因此当您调用该方法时,它实际上返回的string(包含在classChoice 变量中的值)。这就是为什么给你这个错误:'CharSel()'是一个string,你写的(s.CharSel().classChoice)试图在String类上找到一个classChoice方法(或扩展方法)。只需将 .classChoice 从作业中删除到 classChosen,它就会按您的预期工作。

    另一个重要的一点是classChoiceCharSel() 方法的私有变量,在方法之外是不可见的。

    【讨论】:

    • 谢谢我现在有了解决方案@Jaquez,我设法将其恢复为静态 对不起,我正在构建一个文本游戏以使用 C# 来练习我的控制台编码能力,我打了一个石墙我给了它大约 8 种不同的方式,并阅读了我可以在这里找到的所有内容,但无法弄清楚。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 2023-01-12
    • 2020-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多