学习笔记《C#入门经典(第6版)》C#语言:第5章

5章介绍的是C#中的类型转换与更复杂的变量类型

一:类型转换

1:隐式类型转换

    隐式转换的规则是:任何类型A,只要其取值范围完全包含在B类型的取值范围内,就可以隐式转换为类型B

    根据该规则以及从第3章给定的简单数据类型的取值范围,我们可以得到以下的隐式类型转换表


类型可以安全地转换为
byteshort, ushort, int, uint, long, ulong, float, double, decimal
sbyteshort, int, long, float, double, decimal
shortint, long, float, double, decimal
ushortint , uint, long, ulong, float, double, decimal
intlong, float, double, decimal
uintlong, ulong, float, double , decimal
longfloat, double, decimal
ulongfloat, double , decimal
floatdouble
charushort, int, uint, long, ulong, float, double, decimal


值得注意的是上述安全的隐式类型转换中都是只设计到了整型和浮点型数据之间的转换。

警告:boolstring都没有隐式的类型转换

关于char类型:char存储的是数值,所以char被当做一个数值类型

2:强制类型转换

转换语法:(<destinationType>)<sourceVar>

警告:强制类型转换要求是兼容的变量之间的转换,如果不兼容则将导致溢出。

可以使用关键字checked来检查在强制类型转换当中是否发生了溢出。如下面这段代码将在执行时奔溃。

static void Main(string[] args)
        {
            byte destinationVar;
            short sourceVar = 281;
            destinationVar = checked((byte)sourceVar);
            Console.WriteLine("sourceVar val:{0}", sourceVar);
            Console.WriteLine("destinationVar val:{0}", destinationVar);
            Console.ReadKey();
        }
如图:


3:使用Convert命令进行显示转换


命令分别转换为
Convert.ToBoolean(var)bool
Convert.ToByte(var)byte
Convert.ToChar(var)char
Convert.ToDecimal(var)decimal
Convert.ToDouble(var)double
Convert.ToInt16(var)short
Convert.ToInt32(var)int
Convert.ToInt64(var)long
Convert.ToSByte(var)sbyte
Convert.ToSingle(var)float
Convert.ToString(var)string
Convert.ToUInt16(var)ushort
Convert.ToUInt32(var)uint
Convert.ToUInt64(var)ulong


二:复杂的变量类型:枚举,结构,数组

1C#中的枚举与C/C++中的类似,直接给出用例就应该能记住:

namespace Charpter5
{
    enum orientation : byte
    {
        north = 1,
        south = 2,
        east = 3,
        west = 4
    }
    class Program
    {
        static void Main(string[] args)
        {
            orientation myDirection = orientation.north;
            Console.WriteLine("myDirection = {0}", myDirection);

            Console.ReadKey();
        }
    }
}

2C#中的结构与C/C++中的类似,直接给出用例:

enum orientation : byte
    {
        north = 1,
        south = 2,
        east = 3,
        west = 4
    }

    struct route
    {
        public orientation direction;
        public double distance;
    }

3:数组

C#中数组的声明和C/C++中的略有不同,其声明方式为:

一维数组

<baseType> [] <name>

例如:

Int[] myIntArray;

 

二维数组

<baseType>[,] <name>

 

三维数组

<baseType> [,,] <name>

 

多维数组以此类推

 

三:使用foreach循环安全地遍历数组中的元素

Foreac语法:

foreach (<bastType> <name> in <array>){
    //can use <name> for each element
}

四:字符串的处理

 

1string类型的变量可以看做是char变量的只读数组(注意是只读,这意味着只能读取而不能使用该方法写入),可以使用下面的方法来访问每个字符(只能访问不能更改)

<pre name="code" class="csharp">string myString = "A string";
char<span style="font-family:宋体;"> </span>myChar = myString<span style="font-family:宋体;">[0]</span>;

 

2:使用ToCharArray()命令从string类型中获取可写的char数组

string myString = "A string";
char[]  myChars = myString.ToCharArray();

3:两个简单有效的命令:<string>.ToLower()<string>.ToUpper()它们分别将字符串转换成小写和大写的形式。


4<string>.Trim()命令:删除输入内容前面或后面添加了的多余的空格(注意:只能是前面和后面)


5:也可以使用Trim()命令删除其他的字符,只要在一个char数组中指定了这些字符即可,如:

char[] trimChars = { ' ', 'l', 'g', 'n' };
            string userResponse = Console.ReadLine();
            userResponse = userResponse.ToLower();
            userResponse = userResponse.Trim(trimChars);












  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值