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