《类型转换》
//类型转换,把一个类型转成另外一个类型,c#分为显式转换和隐式转换,主要区分点在于
//需不需要程序员自己写代码进行转换(编译器是否自动转换),是否存储数据丢失问题
//1 隐式转换:编译器自动转换,不存在数据丢失场景,(例如值类型把小空间数赋值给大空间的变量,引用类型场景:把派生类对象赋值基类对象)
int a = 10;
double b = a;//编译器自动转换
Console.WriteLine(b);//数据没有丢失
//把派生类对象赋值基类对象
// new Cat(); 派生类对象
// Animal ani 基类变量
Animal ani = new Cat();//编译器自动转换
//隐式转换规则:
//1 值类型 小区间往大区间可以直接转换
//2引用类型 把子类对象赋值父类的对象
//3有符号不能往无符号类型转换。
//显示转换,需要程序员自己写转换代码 ,出现数据丢失的情况 也叫强制转换
//显示转换的语法:(要转换的类型)变量;(int)a
//as和is的区别?
/*
* as 1:先类型判断 在转换
* 2:转换失败为null
* 3:永远不会抛异常
* 4 不可使用在值类型
*
* is 1只有判断 如果写成: anil is Cat c格式(模式匹配) 也可以达到先判断再转换的功能
* 2:返回值为true或者false
* 3:永远不会抛异常
* 4 可以使用在任意类型
*/
//Convert()和Parse()
《递归算法》
//递归算法:函数或者方法 调用自己进行解决问题,核心思想就是把复杂的问题分解为更为简单的子问题,直到子问题简答到能够直接求解(循环结束条件)
//常用的案例 斐波那契数列
//0 1 1 2 5 8...
Console.WriteLine(Fei(5));
//封装斐波那契函数
static long Fei(long n)
{
if (n == 0) { return 0; }
if(n == 1) { return 1; }
return Fei(n-2) + Fei(n-1);
//n=5
/*Fei(3)+Fei(4)
* =Fei(1)+Fei(2)+Fei(2)+Fei(3)
* =1+0+1+0+1+Fei(1)+Fei(2)
* =4+0+1=5
*
*
*/
《try...catch》
//错误分为两种错误
//编译错误:语法错误,
//运行错误:没有红色的语法错误,知道运行时候才会把错误抛出来,数组越界,类型转换错误
//如果直接写的化,可能遇见输入不是一个数字,程序会报字符串格式错误的异常;
//如果输入的是超出整型的范围,报太大太小的异常
*Exception 异常基类
* FormatException格式不正确异常
* OverflowException超出范围异常
* DivideByZeroException除数为0异常
* IndexOutOfRangeException索引值越界异常
* NullReferenceException空引用的异常
* FileNotFoundException找不到文件的异常
*
*
*/
///装箱:把值类型转成引用类型的过程
//拆箱:把引用类型转成值类型的过程