C#类型转换

C# 类型转换 - 南其显 - 博客园

C#中的类型转换 - 小y - 博客园

C#第二节(类型转换、变量、常量)_Enetaunt的博客-CSDN博客_c#类型转换

隐式类型转换 - 这些转换是 C# 默认的以安全方式进行的转换, 不会导致数据丢失。例如,从小的整数类型转换为大的整数类型,从派生类转换为基类。(小->大)

显式类型转换 - 显式类型转换,即强制类型转换。显式转换需要强制转换运算符,而且强制转换会造成数据丢失。 (大->小)

bool -> System.Boolean (布尔型,其值为 true 或者 false)
char -> System.Char (字符型,占有两个字节,表示 1 个 Unicode 字符)
byte -> System.Byte (字节型,占 1 字节,表示 8 位正整数,范围 0 ~ 255)
sbyte -> System.SByte (带符号字节型,占 1 字节,表示 8 位整数,范围 -128 ~ 127)
ushort -> System.UInt16 (无符号短整型,占 2 字节,表示 16 位正整数,范围 0 ~ 65,535)
uint -> System.UInt32 (无符号整型,占 4 字节,表示 32 位正整数,范围 0 ~ 4,294,967,295)
ulong -> System.UInt64 (无符号长整型,占 8 字节,表示 64 位正整数,范围 0 ~ 大约 10 的 20 次方)
short -> System.Int16 (短整型,占 2 字节,表示 16 位整数,范围 -32,768 ~ 32,767)
int -> System.Int32 (整型,占 4 字节,表示 32 位整数,范围 -2,147,483,648 到 2,147,483,647)
long -> System.Int64 (长整型,占 8 字节,表示 64 位整数,范围大约 -(10 的 19) 次方 到 10 的 19 次方)
float -> System.Single (单精度浮点型,占 4 个字节)
double -> System.Double (双精度浮点型,占 8 个字节)

英文字符的 ASCII 码,或者一个汉字字符的 Unicode 码

将英文字符型数据强制转换成合适的数值型数据,就可以得到相应的 ASCII 码;反之,如果将一个合适的数值型数据强制转换成字符型数据,就可以得到相应的字符

把字符串转换成字符数组:字符串类 System.String 提供了一个 void ToCharArray() 方法,该方法可以实现字符串到字符数组的转换。

char[] chars = str.ToCharArray();

把字符数组转换成字符串:可以使用 System.String 类的构造函数来解决这个问题。System.String 类有两个构造函数是通过字符数组来构造的,即 String(char[]) 和 String[char[], int, int)。后者之所以多两个参数,是因为可以指定用字符数组中的哪一部分来构造字符串。而前者则是用字符数组的全部元素来构造字符串。

char[] tcs = {''t'', ''e'', ''s'', ''t'', '' '', ''m'', ''e''};
string tstr = new String(tcs);

字符串转换为Int:

//方法一: int istr = Convert.ToInt16(str);

//方法二: int istr2 = int.Parse(str);

//方法三:int.TryParse(string s, out int i); 

方法三也是将数组内容的字符串转换为int类型,但是该方式比int.Parse(string s)好一些,它不会出现异常,最后一个参数result是输出值,如果转换成功则输出相应的值,转换失败则输出0.

Convert.ToInt32()与int.Parse()区别

1)、这两个方法的最大不同是:他们对null值得处理方法:Convert.ToInt32(null)会返回0而不会产生任何异常,但是int.Parse(null)则会产生异常
(2)、对数据四舍五入时候的区别
a、Convert.ToInt32(double value)如果value为两个整数中间的数字,则返回二者中的偶数;即3.5转换为4,4.5转换为4,而5.5转换位6.不过4.6可以转换为5,4.4转换为4.
b.int.Parse(“4.5”)直接报错:“输入的字符串格式不正确”。
c.int(4.6)=4 int转换其他数值类型为int时都没有四舍五入,强制转换。
(3)、对被转换类型的区别:int.Parse是转换String为int,Convert.ToInt32是转换继承自Object的对象为int的(可以有很多其他类型的数据)。你得到一个Object对象,你想把它转换为int,用int.Parse就不可以,要用Convert.ToInt32.

int a = Convert.ToInt32(""); //异常

int b = int.Parse(""); //异常

 int a = Convert.ToInt32(null); //0
Console.WriteLine(a);

//int b = int.Parse(null); //异常
//Console.WriteLine(b);
int c;
int.TryParse("",out c);  // 0
Console.WriteLine(c);

int d;
int.TryParse(null, out d);  // 0
Console.WriteLine(d);

int e;
Console.WriteLine(int.TryParse(null, out e));  // false
Console.WriteLine(int.TryParse("123", out int m)); //true
Console.WriteLine(int.TryParse("", out int n)); //false

Convert.ToDouble与Double.Parse的区别

实际上,Convert.ToDouble内部调用了Double.Parse:
(1)、对于参数为null时候:
Convert.ToDouble参数为null是,返回0.0;
Double.Parse参数为null时,抛出异常;
(2)、对于参数为“”时:
Convert.ToDouble参数为”“时,抛出异常;
Double.Parse参数为“”时,抛出异常。
(3)、其他区别:
Convert.ToDouble可以转换的类型较多;
Double.Parse只能转换数字类型的字符串。
Double.TryParse与Double.Parse又较为类似,但它不会产生异常,转换成功返回true,转换失败返回false.最后一个参数为输出值,如果转换失败,输出值为0.0;
 

Convert 类常用的类型转换方法如下表所示

方法说明
Convert.ToInt16()转换为整型(short)
Convert.ToInt32()转换为整型(int)
Convert.ToInt64()转换为整型(long)
Convert.ToChar()转换为字符型(char)
Convert.ToString()转换为字符串型(string)
Convert.ToDateTime()转换为日期型(datetime)
Convert.ToDouble()转换为双精度浮点型(double)
Conert.ToSingle()转换为单精度浮点型(float)

 字符串转换为日期类型

Convert.ToDateTime(string)

string格式有要求,必须是yyyy-MM-dd hh:mm:ss
Console.WriteLine(Convert.ToDateTime("2021-09-27 18:30:42")); //2021/9/27 18:30:42

            DateTimeFormatInfo dtFormat = new DateTimeFormatInfo();
            dtFormat.ShortDatePattern = "yyyy/MM/dd";
            DateTime dt = Convert.ToDateTime("2011/05/26", dtFormat);
            Console.WriteLine(dt.ToString()); //2011/5/26 0:00:00

            DateTime dt2 = DateTime.ParseExact("20210909", "yyyyMMdd", System.Globalization.CultureInfo.CurrentCulture);
            Console.WriteLine(dt2.ToString()); //2021/9/9 0:00:00

            DateTime dt3 = DateTime.ParseExact("20210911", "yyyyMMdd", System.Globalization.CultureInfo.InvariantCulture);
            Console.WriteLine(dt3.ToString()); //2021/9/11 0:00:00

            DateTime dateTime;
            var r1 = DateTime.TryParse("", out dateTime);
            Console.WriteLine(r1 + "--------" + dateTime); //False--------0001/1/1 0:00:00

            var r2 = DateTime.TryParse(null, out dateTime);
            Console.WriteLine(r2 + "--------" + dateTime);//False--------0001/1/1 0:00:00

            var r3 = DateTime.TryParse("2021-09-27 19:00:05", out dateTime);
            Console.WriteLine(r3 + "--------" + dateTime); //

            ///DateTime.TryParse 当string内容不正确时,可以返回日期的最小值MinValue。并且可以通过返回的bool值判断转化是否成功。
            ///而DateTime.ParseExact()需要按特定的格式来转换,对格式的要求比较严,如果string中不是日期内容,而量类似“asdfasd”的字符串,则会出错。

posted @ 2021-09-27 18:54  highlightyys  阅读(40)  评论(0编辑  收藏  举报