将数字转换/转换为字符串的最佳方法

时间:2014-05-05 12:51:55

标签: c# string int

我正在查看the following question, comparing casting to converting,其中基本上说明了(通过所有答案),如果您知道对象是字符串,请使用(string)而不是.ToString()

这让我思考 - 如果你的对象可能是一个字符串或int怎么办?或知道它的字符串也扩展为整数?

此规则是否也适用于byte? (之前有意使用过bit

修改
This answer显示了将整数转换为字符串的许多方法,但仍然无法解释实际使用的是什么。

6 个答案:

答案 0 :(得分:2)

如果你有一个int类型但被装箱作为对象的对象,你可以将它转换回来:

object myBoxedStr = "stringvalue";
string unboxedStr = (string)myBoxedStr;

http://msdn.microsoft.com/en-us/library/yz2be5wk.aspx

如果你有一个包含int值的字符串,你可以解析(或tryparse)它

string myIntStr = "5";
int myInt = int.Parse(myIntStr);

如果您不知道盒装类型是否为假名类型,请使用isas

object assumedMyType = new MyType();
MyType myType = assumedMyType as MyType;

如果转换失败(而不是抛出异常),as关键字将返回null

使用is关键字,您可以在转换前检查假定类型的类型是否正确

object assumedInt = 5;
if(assumedInt is int)
{
    int myInt = (int)assumedInt;
}

答案 1 :(得分:2)

具体来说,将数字转换为字符串不会产生任何实际问题,因为任何数字都可以表示为字符串(重要提示:并非每个字符串都可以表示表示为数字!例如,您如何表达" banana"作为数字?)

string mystring = mynumber.ToString();

每次都有效,但不会失败(假设您使用可空类型时非空值)。

同样的方法适用于任何基本类型,以及其他一些类型(DateTime,StringBuilder,...)

从字符串转换为数字可能会出现问题。通常不是相反的方式。

编辑如果你想利用直接(string)投射,以防你的起始对象已经是一个字符串,这可能会有所帮助吗?

string mystring = (myobject as string) ?? myobject.ToString();

myobject as string将尝试直接将对象强制转换为字符串。如果失败,则返回null

?? myobject.ToString()然后确保,如果先前的尝试导致null,则将常规.ToString()方法称为后备方案。

答案 2 :(得分:1)

该问题的结论是,如果你知道你的价值实际上是你想要的类型,那么你应该投下它(例如(int))。这有几个好处:它是有效的,它清楚地表达了你的意图,如果你的推定是假的,它将显着失败。

当您不知道所需类型的值时,或者当您不知道它的类型时,可以使用其他类型的转换。例如,如果您有一个字符串数组,则不应使用(int),而应使用ParseInt及其类似字符串。如果您有object个数组,其中一些是int个,那么as运算符可能就是您想要的。

答案 3 :(得分:0)

string name = GetSql["username"].ToString();

此代码运行缓慢。因为对象(object,int,double等)要进行字符串转换操作。

string name = (string)GetSql["username"];

此代码运行速度非常快。因为不转换操作只是类型名称。

int to string convert。

1 - )

var number = 0;
int.TryParse("213", out number);

最好使用TryParse方法,因为它可以阻止错误发生。

2 - )

var number = int.Parse("123");

答案 4 :(得分:0)

我认为最好的选择,如果你强烈怀疑它是一个字符串,但实际上不确定,是这样的:

string valueString = value is string ? (string) value : (value ?? string.Empty).ToString();

答案 5 :(得分:0)

我的经验是,最佳演员/转换是通过Convert课程归档的。这就是C#期待你的方式。那堂课关心你通常会做的那些丑陋的事情。 当您进行类型转换或仅进行类型转换时,它甚至会将float舍入为int