C#,入门教程(23)——数据类型转换的一点基础知识

发布时间:2024年01月21日

上一篇:

C#,入门教程(22)——函数的基础知识icon-default.png?t=N7T8https://blog.csdn.net/beijinghorn/article/details/124181689

先简单回顾一下,C#的数据类型大致有这样一些:
(1)原始类型:byte, bool, int, double, char, string...
(2)集合类型:List, Stack, Quene, Hashtable...
(3)自定类型:enum, struct, class...

本文仅仅局限于原始数据类型转换的问题。
这里要知道的是:byte, bool, int, double, char, string, List, Stack, Quene, Hashtable...等等,归根结底都是object class。

数据类型的转换是一门艺术,是编程的重要内容。
因而,要做好数据类型转换绝非易事。
包括但不限于下面的要求:
(1)可靠:数据不能丢,少、乱;
(2)速度:遭遇大量、超量的数据,类型转换算法的效率就成了整个系统的基础;
(3)可控:程序最不可避免的唯一的特性就是出错!几乎无法完成的任务只有稳定!如何把数据转换的错误控制在牢笼里,是很讲究的。

一、ToString()

所有数据的原始信息都是 byte。
所有数据类的最终体现都是字符串String(=string) 或者 图像Image。
这里要知道的是:byte,bool,int,double,char,string,List,Stack,Quene,Hashtable...等等都是class。
因而,所有数据类型都有其基本的 ToString() 方法。
自定义的数据类型(class)应该override。

int a = 10;
double b = 3.14;
string c = a.ToString() + b.ToString();
//c = "103.14"
//简约写法:
string c = a + " " + b;
// c = "10 3.14"

二、数据转换的部分典型实例

1、string vs char

string stringSource = "hello world!";
char[] charArray = stringSource.ToCharArray();

string stringResult = new string(charArray);

2、string vs byte

所有数据的原始信息都是 byte。
计算机的所有数据都是按字节 byte 保存的。
这导致,不同的文字编码,文字的存储数据长度可能不同。
比如:

你好!
保存这两个字与一个标点符号的文件,在 DOS 或 Windows 或 iOS 或 Unix 或 Linux 下可能不同。
即使都是 Windows,即使都是 Windows 11,如果保存的时候选择不同的编码,比如 ASCII,或 Unicode 或 UTF-8 ,

因而,string/int/double vs byte 的转换与编码密切相关。
有关编码的知识,很多很多,自己搜 "C# 字符编码"

string stringSource = "hello world!";
Encoding utf8 = System.Text.Encoding.UTF8;
byte[] byteArray = utf8.GetBytes(stringSource);

string stringResult = utf8.GetString(byteArray);

3、string vs int or double

关键是 String.Format 函数:

int a = 18;
double b = 3.14;
string sa = String.Format("{0:D4}", a);
//sa = "0018";
string sb = String.Format("{0:F8}", b);
//sb = "3.14000000";

更多使用方法,请搜 "C# String.Format"

string sa = "32";
int a = Int32.Parse(sa);

或:

string sb = "64";
if(Int32.TryParse(sb, out int a))
{
?? ?;
}

三、数据转换的禁忌

1、少用强制类型转换!Convert!

Convert简化的类型转换的编程,但深深埋下了炸弹级别的错误隐患!
实验室写代码,无所谓了!工业软件,绝不能用Convert !
但我也鼓励大家从学校开始,就养成良好的编程习惯。
?

2、数据转换之前,一定要做数据的检查。

典型的工业软件级别的数据转换程序写法:

string unknowString = "";

//...
//...

if(IsInteger(unknowString))?
{
?? ?int intValue = Int32.Parse(unknowString);
}
else?
{
?? ?throw new Exception("ERROR invalid integer string " + unknowString);
}

很麻烦?
程序写的越麻烦,后面的使用与运行就越可靠!

下一篇:

https://blog.csdn.net/beijinghorn/article/details/124204317icon-default.png?t=N7T8http://C#%EF%BC%8C%E5%85%A5%E9%97%A8%E6%95%99%E7%A8%8B(24)%E2%80%94%E2%80%94%E7%B1%BB%E7%B4%A2%E5%BC%95%E5%99%A8%EF%BC%88this%EF%BC%89%E7%9A%84%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86
?

文章来源:https://blog.csdn.net/beijinghorn/article/details/124187182
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。