Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将列表中的对象转换为字符串_C#_List_Object - Fatal编程技术网

C# 将列表中的对象转换为字符串

C# 将列表中的对象转换为字符串,c#,list,object,C#,List,Object,我想将列表中的第一个属性(例如5)更改为如下字符串:->它只是一个空格。我希望列表中的特定条目为空 以下代码导致错误: 不支持从类型字符串到双精度的隐式转换 可能的 我的代码: 您不能在数字字段中存储空格,但可以使您的类足够聪明,有时显示数字,有时显示空格 class myclass { public bool ShowSpace { get; set; } public double myproperty { get; set; } public override

我想将列表中的第一个属性(例如5)更改为如下字符串:->它只是一个空格。我希望列表中的特定条目为空

以下代码导致错误:

不支持从类型字符串到双精度的隐式转换 可能的

我的代码:


您不能在数字字段中存储空格,但可以使您的类足够聪明,有时显示数字,有时显示空格

class myclass
{
    public bool ShowSpace { get; set; }

    public double myproperty { get; set; }

    public override ToString()
    {
        return this.ShowSpace ? " " : this.myproperty.ToString();
    }
}

正如错误消息所述,您不希望将字符串值分配给double属性。这是不可能的,因为字符串从来都不是双精度的。一个字符串可以用来显示一个double,但它仍然是一个字符串,看起来就像一个double

但是,这样的字符串可以转换为双精度:

string numberString = "5.7";
double number = double.Parse(numberString);
请注意,如果numberString不能转换为double,例如当字符串为

您尝试的是在运行时更改属性的类型。这是不可能的,因为c是一种强类型语言。你不能有一个看起来像

class Foo
{
    double Bar {get; set;}
}
然后在运行时神奇地转换为

class Foo
{
    string Bar {get; set;}
}
您可以使用对象或动态作为条形图类型绕过此问题,但我强烈建议不要这样做。因为is绕过了使用类型的整个概念。在这种情况下,你永远不会知道,wheter是一个双重或字符串


我真的不明白您为什么要这样做,但在我看来,这看起来是一个糟糕的设计,也许另一个解决方案是合适的。

您能告诉我们列表数据类型是什么吗?您是否完全理解double和string之间的区别?问题是,为什么要在myproperty中写入string?您只想将其设置为null吗?也可以设置为null,我使用列表生成一个datagrid视图,在第一行中,我想更改propertyOk的值,如果它是一个双精度值,那么当您尝试将其分配给space时,您期望得到什么?预期的结果是什么?空间是一个数字吗?非常感谢,我认为你是对的,另一个解决方案是最好的方法。我想我可以很容易地在我的列表中输入这个字段,然后改变它的类型。
class Foo
{
    double Bar {get; set;}
}
class Foo
{
    string Bar {get; set;}
}