黑马程序员_学习日记37_601基础加强(enums_truct_类型转换_值类型与引用类型_异常处理_函数返回值)
来源:互联网 发布:决战武林地煞1-10数据 编辑:程序博客网 时间:2024/06/10 19:36
1、索引器(我理解索引器是给数组提供了成为属性的方法)
public class Chinese
{
privatestring[] names = new string[]{“乔丹”,”科比”,”韦德”,”赵晓虎”};
publicstring this[int index]
{
get
{
return names[index];
}
set
{
name[index] = value;
}
}
}
2、显式实现接口
当一个类实现两个接口,两接口有同名的方法,第二个接口需要显式实现
显式实现接口的方法修饰符只能是private,通过类对象访问不到,只能通过接口变量访问。
子类在实现接口的时候可以把接口的方法实现为virtual或abstract
使用接口的建议:
向上转型
在编程时:
接口→抽象类→父类→具体类
避免定义“体积庞大的接口”
3、 overload方法重载、override方法重写、new隐藏的区别?
4、 enum
一般枚举中每个值都是互斥的
枚举中每个值都有一个对应数值来表示,默认从0开始,可以手动设置每个枚举对应的整数
枚举在编译完成后就已经用对应常量来表示了
l 标志枚举
加上[Flags]标签,枚举类型.ToString()返回的就是文字形式,不是数字了。
验证lyh的枚举中是否有白这一项
if((lyh&GoodPeople.白)= = GoodPeople.白)
{
Console.WriteLine(“小伙子很白!”);
}
else
{
Console.WriteLine(“不白!”);
}
l 字符串转枚举
string meiJu = “QMe”;
UserState state =(UserState)Enum.Parse(typeof(UserState),meiJu);
l 默认枚举都是使用int来代替的,但也可以指定具体的数据类型
public enum UserState : byte
5、 结构体struct
结构体与类最大的区别是:结构是值类型,类是引用类型
结构不能继承,但可以实现接口
什么时候用结构?如果需要面向对象的特性,如果存储的数据量比较大,使用类;反之,使用结构。
6、 类型转换CAST
Person p = new 秦皇岛(); //隐式类型转换
秦皇岛 qhd = (秦皇岛)p; //显式类型转换
Chinese p1 = new Chinese();
秦皇岛 qhd = (秦皇岛)p1;(×)
ShanXi sx = new ShanXi();
HeBei hb = (HeBei)sx;(×)
l 把字符串转换为数值类型
string n = “123”;
Console.WriteLine(int.Parse(n));
Console.WriteLine(double.Parse(n));
Console.WriteLine(byte.Parse(n));
Convert可以任意类型相互转换
l 字符串转换为int用int.TryParse()不抛异常
string n = “123”;
int result;
bool b = int.TryParse(n,out result);
if(b) //如果b为True表示转换成功!
{
Console.WriteLine(result);
}
else
{
Console.WriteLine(“转换失败!”);
}
7、 值类型、引用类型
数组是引用类型
所有的引用类型都继承自Object,所有的值类型都继承自System.ValueType,ValueType也继承自Object
值类型在栈上分配内存LIFO:Last In FirstOut值类型变量赋值会拷贝一个副本
l (值传递:传的是栈中的内容)值类型与引用类型作为参数传递
引用类型参数传递如果形参new了新的对象,形参的改变将不影响实参。例:
{
Personpp1 = new Person();
pp1.Name= “罗远浩”;
M3(pp1);
Console.WriteLine (pp1.Name);
Console .ReadKey();
}
static void M3(Person p1)
{
Personp2 = new Person();
p1=p2;
p1.Name= “sk”;
}
输出:罗远浩
图解:
ref表示引用传递,传的是栈的地址
8、 异常处理
l 几种错误
(1) 语法错误,一般编译器会帮我们解决
(2) 逻辑错误,编译、执行都没问题,就是结果错误。如:把“+”写成“-”号。
(3) 异常:在运行时发生的错误。一般会导致程序崩溃
l 常见异常:
(1) 空指针异常,未将对象引用设置到对象的实例。
Person p = new Person();
p = null;
p.Name = “yzk”;// 未将对象引用设置到对象的实例
Console.WriteLine(p.Name);
Console.ReadKey();
(2)除数为0的异常
int n = 10;
int m = 0;
int sum = n / m; // 报异常,试图除以0
l try…catch…finally…的使用:
string str = “abcd”;
try
{
Console.WriteLine(“===========程序开始执行============”);
//把可能发生异常的代码用try块包以来
intn = Convert.ToInt32(str);//异常,输入字符串的格式不正确
Console.WriteLine(n);
}
catch(Exception)
{
//只有当try块中异常,程序才会跳到catch中执行
Console.WriteLine(“对不起,程序崩溃鸟!!!”);
}
finally
{
Console.WriteLine(“这句话无论异常与否都执行”);
}
Console.ReadKey();
l catch块的写法
(1)catch
{
Console.WriteLine(“异常了”);
}
(2)如果参数类型是Exception,表示可以捕获所有异常
catch(Exception ex)
{
Console.WriteLine(“异常了。{0}”, ex.Message);
}
(3)如果参数是NullReferenceException,表示只能捕获“空指针异常”。捕获所有异常的catch不能写在具体异常的前面
catch(NullReferenceExceptionex)
{
Console.WriteLine(“异常。{0}”,ex.Message);
}
catch(Exception ex)
{
Console.WirteLine(“异常”);
}
l 异常信息的处理
catch(Exceptionex)
{
Console.WriteLine(ex.Message); //异常消息
Console.WriteLine(ex.Source); //异常源
Console.WriteLine(ex.StackTrace); //具体异常信息
}
l 因为finally中的代码无论程序是否发生异常都会被执行,所以一般会把一些释放资源的代码放到finally中。在finally中的代码即便某些异常没有被捕获,程序崩溃了也要执行。即便在try中有return语句,finally依然执行
InnerException(?)
throw的用法
1、 在catch中用 2、new Exception
try…catch…finally…尽量少用
9、 函数返回值(函数参数前的修饰符)
params 可变参数可以不传值,则可变参数是一个长度为0的数组,不是Null。
当一个方法有多个参数,并包含可变参数时,可变参数放最后。
可以为可变参数直接传一个对应的数组
ref 仅仅是一个地址,引用传递。把一个值带进去再带出来
out参数在方法中必须赋值,当一个方法返回多个值考虑用out参数。由于out参数在方法中肯定被赋值了,实参可以不提前赋值
Convert.To、To、Parse、TryParse的区别?(Format?)
作业:41结构备注
改点名系统
- 黑马程序员_学习日记37_601基础加强(enums_truct_类型转换_值类型与引用类型_异常处理_函数返回值)
- 黑马程序员_类型转换
- 黑马程序员_学习笔记10——引用类型与值类型,继承,访问修饰符,里氏转换
- 黑马程序员_值类型和引用类型
- 黑马程序员_类型和类型转换
- java值类型与引用类型_旺旺老师Java学习解决方案_第一季
- 黑马程序员_03_标示符_常量_进制_变量_类型转换
- 黑马程序员_枚举类型
- 黑马程序员_类型信息
- 黑马程序员_学习日记1_有关C#基础知识总结归纳之对象和类型
- 黑马程序员_学习日记2_有关C#基础知识总结归纳之对象和类型
- 黑马程序员--Java学习日记9_基础加强
- 黑马程序员_总结跳转语句、枚举类型、结构体类型、类以及值类型和引用类型的区别
- 读书笔记_CLR.via.c#第五章_基元类型_引用类型_值类型
- 基础加强_枚举类型Enum
- C++_引用类型
- C#_引用类型
- 黑马程序员_基础加强_枚举
- bjective-c里面如果使用实例变量和引用计数来管理内存
- Object-C中的内存管理
- 渐进符号记法
- 中长期水文预报——逐段回归法
- 新站如何提高百度权重
- 黑马程序员_学习日记37_601基础加强(enums_truct_类型转换_值类型与引用类型_异常处理_函数返回值)
- 黑马程序员_学习日记38_602基础加强(string、StringBuilder、Object.ReferenceEquals)
- 学习使用autotools
- ssh2(struts2+spring2.5+hibernate3.3+ajax)带进度条文件上传(封装成标签)
- 艾学山老师 VC随机抽题
- FreeFileSync v5.4
- Photoshop样式的角度和高度选择器控件
- 水文预报——竹溪坡流域洪水预报
- 2012-06-03