C# 语法练习(4): 类型转换


使用 Convert 类:
ToBoolean  -> bool
ToByte     -> byte
ToChar     -> char
ToDateTime -> DateTime
ToDecimal  -> decimal
ToDouble   -> double
ToInt16    -> short
ToInt32    -> int
ToInt64    -> long
ToSByte    -> sbyte
ToSingle   -> float
ToString   -> string
ToUInt16   -> ushort
ToUInt32   -> uint
ToUInt64   -> ulong

using System;

class MyClass
{
    static void Main()
    {
        int num;
        string str;

        num = 99;
        str = Convert.ToString(num);
        Console.WriteLine(str);

        str = "123";
        num = Convert.ToInt32(str);
        Console.WriteLine(num);

        Console.ReadKey();
    }
}

 
 
 
 
 

 

 
  

隐式转换, 只要容得下就行:
using System;

class MyClass
{
    static void Main()
    {
        byte n = byte.MaxValue;

        short n1 = n;
        int   n2 = n;
        long  n3 = n;

        Console.WriteLine("{0},{1},{2}", n1, n2, n3); //255,255,255

        Console.ReadKey();
    }
}

 
 
 
 
 

 

 
  

显示转换, 可能会因溢出而丢失数据:
using System;

class MyClass
{
    static void Main()
    {
        ulong n = ulong.MaxValue;

        byte   n1 = (byte)n;
        ushort n2 = (ushort)n;
        uint   n3 = (uint)n;

        Console.WriteLine("{0},{1},{2}", n1, n2, n3); //255,65535,4294967295

        Console.ReadKey();
    }
}

 
 
 
 
 

 

 
  

溢出检查:
using System;

class MyClass
{
    static void Main()
    {
        int i;
        byte b;

        i = 255;
        b = (byte)i;             /* i 在 byte 的范围内, 不会溢出 */
        b = unchecked((byte)i);  /* 同上一行, 不做溢出检查 */
        Console.WriteLine(b);    // 255

        i++;
        b = (byte)i;             /* i 超出 byte 的范围内, 会溢出 */
        b = unchecked((byte)i);  /* 同上一行, 不做溢出检查 */
        Console.WriteLine(b);    // 0

        i = 255;
        b = checked((byte)i);    /* 可以通过溢出检测 */
        Console.WriteLine(b);    // 255

        i++;
        b = checked((byte)i);    /* 不能通过溢出检测, 会报错 */
        Console.WriteLine(b);

        Console.ReadKey();
    }
}

 
 
 
 
 

 

 
  

你可能感兴趣的:(C# 语法练习(4): 类型转换)