C#无法将类型转换为字符串

时间:2018-11-26 13:03:24

标签: c# string

这是我的代码:

public static string HDDData()
{
    string Timestampy = null, TotalSpace = null, SpaceLeft = null, 
    PercentageLeft = null;
    TotalSpace = GetTotalFreeSpaceGB();
    SpaceLeft = GetTotalSpaceGB();
    PercentageLeft = GetTotalFreeSpacePercentage();
    Timestampy = Timestamp();
    var HDD = new HDDFormat
    {
        TotalSpace = TotalSpace,
        SpaceLeft = SpaceLeft,
        PercentageLeft = PercentageLeft,
        Timestamp = Timestampy
    };
    return HDD;
}

这是HDDFormat:

public class HDDFormat
{
    public string TotalSpace { get; set; }
    public string SpaceLeft { get; set; }
    public string PercentageLeft { get; set; }
    public string Timestamp { get; set; }
}

您获得的数据是正确的字符串。 (.ToString()也不起作用)

4 个答案:

答案 0 :(得分:1)

您必须更改方法的返回类型。不应为string,而应为HDDFormat

类型

否则,您应制作override中的ToString,例如:

public override string ToString()
{
   return $"{TotalSpace },{SpaceLeft },{PercentageLeft },{Timestamp }";
}

并像这样使用:

...
 return HDD.ToString();

答案 1 :(得分:0)

字符串主要是关于向用户输出Stuff。因此,它完全取决于(G)UI。对于WinForms,WPF / UWP,控制台,ASP.Net,该代码看起来有所不同。

有一个ToString()方法。它在Object中定义,因此是任何类所固有的。默认实现仅显示类名称(YourNamespace.HDDFormat),但是您可以随意覆盖它(请参见Reniuz链接)。但主要是用于字符串转储,主要用于调试/最小化用户界面。

如果这是关于通过XML传输的,那么有适当的属性和梗塞之处。参见Serialisation

答案 2 :(得分:0)

您的方法HDDData应该返回一种字符串类型。 但是您将返回类HDDFormat

您可以将返回类型更改为HDDFormat,如下所示:

public static HDDFormat HDDData(){
    ...
}

或者让您的类继承String类,如下所示:

public class HDDFormat : String
{
    public string TotalSpace { get; set; }
    public string SpaceLeft { get; set; }
    public string PercentageLeft { get; set; }
    public string Timestamp { get; set; }
}

,但是在执行此操作时,您将不得不覆盖一些功能。 最后一种选择是只返回您要访问的特定字符串。

return HDD.PercentageLeft;

  

我想以HDDFormat的形式返回它,但是我仍然需要从中获取数据

然后,您应该使用第一个选项。然后,您可以访问其属性。

HDDFormat myFormat = HDDData();
MessageBox.Show(myFormat.PercentageLeft);

答案 3 :(得分:0)

只需创建一个返回字符串的方法

例如:

    using System;

    public class Program
   {
    public static void Main()
    {


        HDDFormat disk = new HDDFormat();

        disk.TotalSpace = "500gb";
        disk.SpaceLeft = "120gb";
        disk.PercentageLeft = "60%";
        disk.Timestamp = "2018-10-11 ";

        Console.WriteLine(disk.HDDformat());

       }
     }

     public class HDDFormat
     {
      public string TotalSpace { get; set; }
      public string SpaceLeft { get; set; }
      public string PercentageLeft { get; set; }
      public string Timestamp { get; set; }

     public string HDDformat(){
      return TotalSpace + SpaceLeft + PercentageLeft + Timestamp; }
      }