C#转整型的三种方式的区别
三种转换方式:
1. 强制转换(int)
2. Convert.ToInt32()
3. int.Parse(string) 或 int.TryParse(string, out int)
三种类型转整型:
a.浮点型转整型
由报错的提示可知int.Parse() 或 int.TryParse(string, out int)这两种方法只能将字符串数字转为整型,不能将浮点数转为整型。
由上图结果可知,(int)强转 截取整数了部分,Convert.ToInt32()遵从四舍五入的原则
b.字符串数字转整型
由报错可知,(int)强转不能将字符串数字转为整型
Convert.ToInt32(),int.Parse(string) 或 int.TryParse(string, out int)都可以将字符串数字转为整型
c. 字符转整型
由报错的提示可知int.Parse() 或 int.TryParse(string, out int)这两种方法不能将字符转为整型
(int)强转、Convert.ToInt32可以将字符转为整型
总结下:
可以浮点数转整数:(int)强转 截取整数部分,Convert.ToInt32()遵从四舍五入
可以字符转整型:(int)强转,Convert.ToInt32()
可以字符串数字转整型:Convert.ToInt32(),int.Parse(string) , int.TryParse(string, out int)
C#转整型三种方式的效率对比
1. (int)强转和Convert.ToInt32的对比,因为两者都能字符型转整型
因为考虑到两种方法在不同的平台上可能效率会有不同,所以分别在Unity引擎上和VS2017编辑器上测试。
(测试的时候出现了一点小插曲,就是你会发现这个代码其实写的有问题,就是循环里面变量i的值会被改变,造成无限循环了,结果处于卡死的状态,不过这个不会影响测试的最终结果,后来也改正了代码,测试得出的结论是一样的)。由上图结果可得出结论:(int)强转效率高于Convert.ToInt32。
2. int.Parse(string) , int.TryParse(string, out int),Convert.ToInt32()效率对比,因为三者都能将字符串数字转为整型
由上图的结果得出结论:
在Unity引擎上效率由高到低:int.Parse(string) , int.TryParse(string, out int),Convert.ToInt32()
在VS控制台山效率由高到低:Convert.ToInt32(),int.Parse(string) , int.TryParse(string, out int)
测试结果有点不同,可能与Unity的测试环境与引擎有关吧。
由于上次测试的时候程序写的有点问题,遍历的次数可能太少了,数据对比可能有偶然性,于是又测试对比了下,把遍历次数加到1000和10000,得出的结果对比得出的结论仍然与上次相同。
最后再总结:
浮点型转整型:
- (int)强转 截取整数部分,Convert.ToInt32()遵从四舍五入原则。
- 按需求选用。
字符转整型:
- (int)强转,Convert.ToInt32()。
- 在Unity中测试和VS控制台测试得出的结论都一致,(int)强转效率高于Convert.ToInt32。
整型数字字符串转整型:
- Convert.ToInt32(),int.Parse(string) 或 int.TryParse(string, out int)。
- 在Unity中测试和VS控制台测试得出的结论有点不一样,
Unity中效率由高到低:
int.Parse(string) , int.TryParse(string, out int),Convert.ToInt32();
在VS控制台中效率由高到低:
Convert.ToInt32(),int.Parse(string) , int.TryParse(string, out int)。 - 如果大多数在Unity中使用,在整型数字字符串转整型的时候,在int.Parse(string) , int.TryParse(string, out int)两种中按需求选择吧。