【问题标题】:C# No overload method 'ToString' takes 1 arguments - simpleC# 无重载方法 'ToString' 需要 1 个参数 - 简单
【发布时间】:2012-04-21 04:30:38
【问题描述】:

我是 C# 的新手,遇到了一个我不知道如何修复的错误。正如标题所述,我得到 No 重载方法 'ToString' 需要 1 个参数错误。我在这里查看了其他问题,但它们比我想要做的更复杂。我有一个简单的等式,我试图在消息框中显示它,它看起来如下:

Y = C + I + E + G;

MessageBox.Show(ToString(Y));   

公式中的所有变量都是整数,存储为 int,取自文本框。我一直在 YouTube 上从 thenewboston 的教程中学习 C#,但我还没有在那里看到这个问题,然后又有 200 多个关于 C# 的视频,我还没有走到那一步。任何有关错误调试的建议将不胜感激。

【问题讨论】:

  • FWIW,我通常使用"" + Y 而不是Y.ToString(),因为如果Y 为空,前者将导致""Exception。当然,这可能是不正确的(或不需要)语义的,因此请选择适当...
  • @pst 这对我来说很有趣,您不想尽快知道您正在使用的对象是否为空吗?也许Y ?? "NULL VALUE"
  • @NominSim “这取决于”应该发生什么。我通常会发现自己合并到“”,除非我明确要求其他方式。此外,Y ?? "foo" 仅在 Y 已经是字符串时才有效。有些人更喜欢明确的:Y != null ? Y.ToString() : ""。只是要记住的事情。
  • 我们不能说 OP 是否将 var 声明为 int? (可为空的 int)或 int。在第二种情况下,不需要检查空值
  • @pst 啊是的...我的意思是,如果我“忽略”一个空值,我通常会使用一些“空值”默认值来代替。这绝对取决于具体情况。

标签: c#


【解决方案1】:

正确的语法是:

MessageBox.Show(Y.ToString());  

【讨论】:

    【解决方案2】:

    你试过了吗

    MessageBox.Show(Y.ToString());  
    

    【讨论】:

    • /facepalm 那里。这解决了我的问题,我不知道为什么我把它弄混了,可能是用不同的语言思考。
    【解决方案3】:

    ToString 不是运算符。它是对象类的方法。

    【讨论】:

    • 你的解释对于那些正在努力正确拨打ToString()的人来说是完全不透明的。
    • 它是一个实例方法,所以它被视为MessageBox.Show(this.ToString(Y)),这可能解释得更好一点。
    【解决方案4】:

    提供一点解释:在 C# 中,所有东西都有一个 ToString() 方法,您可以调用该方法来给出 Object 的字符串表示。由于您正在调用ToString(Y),因此它抱怨您为 ToString 方法使用了错误数量的参数。一般来说,正如其他人所指出的,将对象表示为String 的方法是调用Y.ToString()

    值得注意的是,您可以在您创建的任何类中覆盖ToString() 方法,这样调用该类的ToString() 方法将返回更有用的String

    【讨论】:

      【解决方案5】:

      上面的帖子几乎涵盖了您的问题的解决方案。关于您收到的错误: 当您在不引用变量的情况下调用 ToString(Y) 时,编译器将查看当前上下文,在您的情况下,该上下文是默认情况下从 Object 继承的类,有关详细信息,请参阅此 link。因此,当您执行 ToString 时,编译器将查看 Object.ToString()(如果没有被覆盖),它不接受任何参数,这就是您得到的原因:

      没有重载方法 'ToString' 需要 1 个参数错误

      【讨论】:

        猜你喜欢
        • 2014-10-20
        • 2012-02-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-04
        • 1970-01-01
        • 2021-11-04
        相关资源
        最近更新 更多