1.as的用法
// as 就是看左边的这个对象(左边的这个变量中指向的对象) 能不能转化为右边的类型
// 如果可以转换,就将转化后的结果赋值给=左边的变量
// 如果不能转换,就给左边的变量附一个null
chinese2(类) dirver(实例化对象)=p[i](被判断的对象) as chinese2
(看这个对象是否可以通过里氏转化转化成这个类)
if (driver != null) //假如是存在的,既不为null,则进行调用方法操作,调用的是子类方法
{
Console.Write(i + "\t");
driver.Driving();
}
as的用法
语法
对象 as 类型
Base myBase = sub as Base;
等价于
Base myBase;
if(sub is Base)
{
myBase = (Base)sub;
}
else
{
myBase = null;
}
2.静态成员
什么事静态成员
前面有static修饰的成员
2、如何调用静态成员
直接使用“类名.成员”
3、什么是静态类
很多时候,可以发现一个静态的方法就是一个功能
有时一个类中的成员全部是静态
多半将这种类写成一个静态类
在类的前面加上一个static即可
3.ref,out
(1)ref使用前要赋值,out在方法中要赋值
(2) int num1 = 10;
int num2 = 5;
Func(ref num1, ref num2);
public static void Func(ref int n1, ref int n2)
{
int temp = n1;
n1 = n2;
n2 = temp;
}
//ref 加上ref后,调用者的变量和方法中的参数,指向的而是同一块内存空间,既改变一个,另一个也会改变。在使用前可赋值也可不赋值。
//实参和形参都必须加ref
//out out的作用就是传出多个值,当需要一些值并且与返回值类型不一样时,可以用来传出值。比如传出异常信息。
//实参和形参都必须加ref
4.异常处理
{1}Try....Catch....Finally....
无论怎么样,Finally都会执行,哪怕是Try中有return语句,也会先执行finally再执行return
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
(2) throw new Exception("异常信息");
如何抛出异常
异常抛哪儿去了
异常抛给调用它的方法
如果该方法没有处理异常,就再往上抛
如果做了异常处理,就不再往上抛static void Main(string[] args)
{
try
{
Func1();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
Console.ReadKey();
}
public static void Func1()
{
// 如果该方法中用到一个资源需要被回收
try
{
Func();
}
finally
{
Console.WriteLine("释放资源");
}
}
public static void Func()
{
throw new Exception("123");
}
}