Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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#_String_Int - Fatal编程技术网

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

C# 将数字转换为字符串的最佳方法,c#,string,int,C#,String,Int,我在看,这基本上贯穿了所有的答案,如果你知道你的对象是一个字符串,使用字符串而不是.ToString 这让我想到——如果你的对象可能是字符串或int呢?或者知道它是字符串也可以扩展到整数 这个规则也适用于字节吗?稍早一点不小心用的 编辑 显示了许多将整数转换为字符串的方法,但这仍然不能解释真正使用哪种方法。这个问题的要点是,如果您知道您的值实际上是您想要的类型,那么您应该将其转换为int。这有几个好处:它是高效的,它清楚地表达了您的意图,如果你的假设是错误的,那么它将明显失败 当您不知道所需类型

我在看,这基本上贯穿了所有的答案,如果你知道你的对象是一个字符串,使用字符串而不是.ToString

这让我想到——如果你的对象可能是字符串或int呢?或者知道它是字符串也可以扩展到整数

这个规则也适用于字节吗?稍早一点不小心用的

编辑
显示了许多将整数转换为字符串的方法,但这仍然不能解释真正使用哪种方法。

这个问题的要点是,如果您知道您的值实际上是您想要的类型,那么您应该将其转换为int。这有几个好处:它是高效的,它清楚地表达了您的意图,如果你的假设是错误的,那么它将明显失败


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

这个问题的要点是,如果你知道你的值实际上是你想要的类型,那么你应该强制转换它,例如int。这有几个好处:它是有效的,它清楚地表达了你的意图,如果你的假设是错误的,那么它将明显失败

string name = GetSql["username"].ToString();
当您不知道所需类型的值时,或者当您知道它不是时,可以使用其他类型的转换。例如,如果您有一个字符串数组,则不应使用int,而应使用ParseInt及其同类。如果您有一个对象数组,其中一些是int,那么as操作符可能就是您想要的

string name = GetSql["username"].ToString();
这段代码运行缓慢。因为objectobject、int、double等都是字符串转换操作

string name = (string)GetSql["username"];
这段代码运行速度非常快。因为不转换操作只能指定类型

int到字符串的转换

一,-

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

二,-

这段代码运行缓慢。因为objectobject、int、double等都是字符串转换操作

string name = (string)GetSql["username"];
这段代码运行速度非常快。因为不转换操作只能指定类型

int到字符串的转换

一,-

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

二,-


如果您有一个int类型的对象,但该对象被装箱为对象,则将其强制转换回:

object myBoxedStr = "stringvalue";
string unboxedStr = (string)myBoxedStr;
如果您有一个包含int值的字符串,您可以对其进行解析或tryparse

string myIntStr = "5";
int myInt = int.Parse(myIntStr);
如果您不知道装箱类型是否为您使用的“是”和“作为”的汇总类型

如果转换失败而不是引发异常,as关键字将返回null

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

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

如果您有一个int类型的对象,但该对象被装箱为对象,则将其强制转换回:

object myBoxedStr = "stringvalue";
string unboxedStr = (string)myBoxedStr;
如果您有一个包含int值的字符串,您可以对其进行解析或tryparse

string myIntStr = "5";
int myInt = int.Parse(myIntStr);
如果您不知道装箱类型是否为您使用的“是”和“作为”的汇总类型

如果转换失败而不是引发异常,as关键字将返回null

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

object assumedInt = 5;
if(assumedInt is int)
{
    int myInt = (int)assumedInt;
}
具体来说,将数字转换为字符串并不存在实际问题,因为任何数字都可以表示为字符串。重要的是:并非每个字符串都可以表示为数字!e、 g.你如何将香蕉表示为一个数字

string mystring = mynumber.ToString();
每次都有效,在使用可空类型的情况下,假定值为非空值时不会失败

相同的精确方法适用于任何基元类型,以及其他一些DateTime、StringBuilder等

从字符串到数字的转换可能会有问题。通常不是相反

编辑如果你想利用直接字符串转换,以防你的起始对象已经是一个字符串,这可能会有帮助吗

string mystring = (myobject as string) ?? myobject.ToString();
myobject as string将尝试直接将对象强制转换为字符串。如果失败,则返回null

???myobject.ToString然后确保,如果以前的尝试导致null,则常规的.ToString方法将作为回退方案调用。

具体来说,将数字转换为字符串不会带来实际问题,因为任何数字都可以表示为字符串。重要的是:并非每个字符串都可以表示为数字!e、 g.你如何将香蕉表示为一个数字

string mystring = mynumber.ToString();
每次都有效,在使用可空类型的情况下,假定值为非空值时不会失败

相同的精确方法适用于任何基元类型,以及其他一些DateTime、StringBuilder等

从字符串到数字的转换可能会有问题。通常不是相反

编辑如果你想利用直接字符串转换,以防你的起始对象已经是一个字符串,这可能会有帮助吗

string mystring = (myobject as string) ?? myobject.ToString();
myobject作为字符串将尝试直接访问cas 将对象转换为字符串。如果失败,则返回null


???myobject.ToString然后确保,如果以前的尝试导致null,则将常规的.ToString方法作为回退方案调用。

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


string valueString=值是否为string?字符串值:值??string.Empty.ToString

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


string valueString=值是否为string?字符串值:值??string.Empty.ToString

根据我的经验,最好的演员/转换是通过convert类存档的。这就是C对你的期望。那班学生关心你平时会做的那些丑陋的事情。
当您进行类型转换或简单的类型转换时,它甚至会将浮点值舍入为int。

我的经验是,最好的转换/转换是通过convert类存档的。这就是C对你的期望。那班学生关心你平时会做的那些丑陋的事情。

当您进行类型转换或简单的类型转换时,它甚至会将float四舍五入为int。

建议:编写一个程序,看看它们是如何执行的。我的猜测是,就所有实际目的而言,这并不重要。这一切都归结于风格,以及什么对你和其他与你一起工作的开发人员最有意义。@drew_w对于速度测试或基准测试,编写一个应用程序肯定会奏效。然而,我不知道这些被调用的CLR到底有多远,我想知道是否有一种方法明显优于另一种方法。我很困惑。你似乎在第一段中引用了你问题的答案。如果您不知道对象是字符串还是int,那么您显然不知道对象是字符串,因此不能直接强制转换。我不知道你说的一点点是什么意思。据我记忆所及,c没有任何一个。对不起,我指的是字节,实际上我想到的SQL调用比任何东西都多。建议:编写一个程序,看看它们是如何执行的。我的猜测是,就所有实际目的而言,这并不重要。这一切都归结于风格,以及什么对你和其他与你一起工作的开发人员最有意义。@drew_w对于速度测试或基准测试,编写一个应用程序肯定会奏效。然而,我不知道这些被调用的CLR到底有多远,我想知道是否有一种方法明显优于另一种方法。我很困惑。你似乎在第一段中引用了你问题的答案。如果您不知道对象是字符串还是int,那么您显然不知道对象是字符串,因此不能直接强制转换。我不知道你说的一点点是什么意思。据我记忆所及,c没有一个,抱歉-我指的是字节-实际上我想到的SQL调用比任何东西都多。我总是这样想:如果你已经知道值应该是整数,那么为什么类型不是整数呢?如果值是用户输入的文本字符串,我喜欢始终保护自己不受用户的影响,并使用Parse或TryParse。您可以给出一些示例,在这些示例中,您可以合理地依赖一个整型值,即使该类型不能保证它。一种常见的情况是组件之间的接口。C中的强制转换应该不常见,因为该语言的安全转换运算符和对泛型的强大支持避免了强制转换的常见用途。我总是这样想:如果您已经知道值应该是整数,那么为什么类型不是整数呢?如果值是用户输入的文本字符串,我喜欢始终保护自己不受用户的影响,并使用Parse或TryParse。您可以给出一些示例,在这些示例中,您可以合理地依赖一个整型值,即使该类型不能保证它。一种常见的情况是组件之间的接口。C语言中的强制转换应该是不常见的,因为该语言的安全转换运算符和对泛型的强大支持避免了强制转换的常见用途。这个答案指向了我的问题的方向。这些是我在决定我使用哪种技术进行强制转换/转换时使用的规则。我还考虑了我是否希望代码抛出异常,例如parse或tryparseThis这个答案指向我的问题的方向。这些是我在决定使用哪种技术进行转换/转换时使用的规则。我还考虑了我是否希望代码抛出异常,例如parse或tryparseThat,这是一个非常优雅的解决方案!谢谢:没问题:不过要小心空值。您可能希望事先检查null,否则优雅的解决方案将变成。。。不那么优雅;这是一个非常优雅的解决方案!谢谢:没问题:不过要小心空值。您可能希望事先检查null,否则优雅的解决方案将变成。。。不那么优雅;如果我错了,请纠正我,但最后一部分是将值设置为字符串。如果值为null,则为空?是;如果您想要一个NullReferenceException,或者您知道
确保它不为null。如果我错了,请纠正我,但最后一部分是将值设置为String。如果值为null,则为空?是;如果您想要一个NullReferenceException,或者您确信它不是null,那么可以跳过它。