【问题标题】:using toString() for a type variable in C# [closed]在 C# 中对类型变量使用 toString() [关闭]
【发布时间】:2013-12-07 12:58:05
【问题描述】:

我的 C# 代码遇到问题。我想使用 toString() 方法将 T 类型的变量转换为字符串。我已经为我自己的类型重写了这个方法,我使用的变量是通用的很重要,因为它可以接受多种类型的值。我尝试使用强制转换为 Object,但它返回一个错误,说明

 'object' does not contain a definition for 'toString' and no extension method 'toString' accepting a first argument of type 'object' could be found.

这是代码行:

 T stud;
 students += (stud as Object).toString()+"\n";

【问题讨论】:

  • ToString(),而不是 toString()。 C# 区分大小写。
  • 应该是 ToString() ...大概
  • 方法是ToString而不是toString。您也不需要演员表Object。您可能还需要考虑使用 StringBuilder 而不是连接字符串。
  • 这个问题似乎是题外话,因为它是关于一个错字

标签: c# variables types tostring


【解决方案1】:

这是因为System.Object 定义了方法ToString,大写为T。更改案例以解决问题。

注意:用+= 连接字符串的代码通常效率低下。如果您需要连接少量固定数量的字符串,请使用string.Format("{0}\n{2}", firstString, secondString)。如果您需要连接大量字符串,请使用StringBuilderstring.Join 方法。

【讨论】:

    【解决方案2】:

    是 ToString(); C# 区分大小写。 此外,正如 cmets 中已经解释的那样,您不需要使用 as Object 转换,因为 C# 中的每个类都定义了 ToString() 方法,因为每个类都派生自 object

    但是,如果上面的代码正是您的代码,那么您就有另一个问题了。

    类型 T 的变量 stud 未在任何地方初始化并使用

    (stud as Object).ToString()
    

    将导致空引用异常

    【讨论】:

    • 我已经初始化了,我把那部分去掉了。谢谢,现在工作正常
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-22
    • 1970-01-01
    • 2016-09-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多