您的位置:首页 > 编程语言 > C#

C# 面向对象系列笔记(三)

2015-07-05 00:27 495 查看
第三天

1. 类转换的关键字is和as

is (能不能转):

如果转换成功,则换回true,如果转换不成功,则返回false;

Person person = newStudent("学生", 11, '男', 100);

if (person isStudent)

{

((Student)person).Study();

}

else

{

Console.WriteLine("转换失败");

}

as:(尝试的转)

如果转换成功,则返回要转的对象,失败则返回null

Person person = newStudent("学生", 11, '男', 100);

Teacher teacher = person asTeacher;

if (teacher != null)

{

teacher.Teach();

}

else

{

Console.WriteLine("转换失败");

}

2.base:关键字

区别:

this:

1> 就代表当前类的对象

2> 调用当前自己类中的构造函数

base:

1> 指向父类的引用,可以调用父类的成员。

2> 子类继承父类的构造函数时,用于调父类的构造函数

base并不代表父类的对象,而是指向父类的一个引用

通过base关键字,我们可以调用父类的成员

publicnewvoid Test()//彻底的将父类的Test隐藏了子类调用不到父类的Test()了

{

Console.WriteLine("我是子类");

base.Test();

}

3. new

1> 把父类与子类同名的方法进行隐藏,子类把方法重写

2> 创建对象

Person类

publicvoid Test()

{

Console.WriteLine("我是父类");

}

Teache类

publicnewvoid Test()//彻底的将父类的Test隐藏了子类调用不到父类的Test()了

{

Console.WriteLine("我是子类");

base.Test();

}

4. ArrayList集合:

特点: 不需要考虑数组的长度

不需要考虑元素的类型和个数

常用的方法:

1> list.count : 实际包含的元素个数;

2> list.capcity: 可包含的数组个数(从4开始,进行2为递增)

3> list.Add(): 添加单个元素;

4> list.AddRange(): 添加一个数组

5> list.Clear(): 清除集合中所有的元素

6> list.Remove(“张三”): 写谁谁就被删掉了

7> list.RemoveAt(1): 根据下标删除集合中的元素;

8> list.RemoveRange(0,3): 删除一定范围内的元素

9> list.Insert(1,”我是新来的”);插入元素到指定1的位置

10> list.InsertRange(0, new string[] { "张三", "李四", "王二狗蛋儿" }): 插入一条数组

11> list.Sort() 进行升序排列

12> list.Rever() 反转整个数组

5. 装箱和拆箱

装箱:值类型---à引用类型

int n = 10;

object o = n;//装箱

拆箱:引用类型---à值类型

int n2 = (int)o;//拆箱

注意: 有继承关系的对象才能发生拆装箱,没有就不能发生拆装箱;

装箱什么类型,拆箱就必须什么类型

6.Hashtable字典集合(键--->字典的拼音目录;值--->汉字)

定义:存储数据的时候,采用的是键值对的方式来进行存储。

创建过程:

Hashtable ht = newHashtable(); //创建字典集合对象

ht.Add(1, "张三"); //给集合对象添加数据

Console.WriteLine(ht[1]); //根据键的值输出值

//我们使用foreach循环来对键值对集合进行遍历

foreach (var item in ht.Values) //如果ht.Keys就是把数组中所有键传入item中,最后根据ht[item]查询值

{

//Console.WriteLine("键{0}----值{1}",item,ht[item]);

Console.WriteLine(item); //item值

}

注意:1.在我们给Hashtable添加数据的时候,键必须是唯一的,而值是可以重复的;

if (!ht.ContainsKey(2)) //判断键是否重复

{

ht.Add(2, "新来哒");

}

else

{

Console.WriteLine("集合中已经存在相同的键");

}

2.键是可以重新赋值的。

7. var

称之为推断类型,能够根据值推断出值的类型

var number = 100;

var pi = 3.14;

var name = "张三";

var gender = '男';

var money = 5000m;

var b = true;

Console.WriteLine(number.GetType());

Console.WriteLine(pi.GetType());

Console.WriteLine(name.GetType());

Console.WriteLine(gender.GetType());

Console.WriteLine(money.GetType());

Console.WriteLine(b.GetType());



注意:本类型不建议使用,因为C#是一门强类型语言,就是对数据的类型必须有一个明确的定义。而且造成程序后期可读性差;

8. File: (using System.IO;//File类的命名空间)

常用函数:

File.Exist(): 判断指定的文件是否存在,返回bool类型;

File.Create(): 创建一个对象;

eg:

//创建文件之前,首先判断文件是否存在绝对路径

if (!File.Exists(@"C:\Users\SpringRain\Desktop\new.txt"))

{

File.Create(@"C:\Users\SpringRain\Desktop\new.txt");

}

File.Delete(): 删除一个文件;

eg:

File.Delete(@"C:\Users\SpringRain\Desktop\new.txt");

Console.WriteLine("删除成功");

File.Copy(): 复制一个文件;

eg:

File.Copy(@"C:\Users\SpringRain\Desktop\繁体字.txt", @"C:\Users\SpringRain\Desktop\new繁体字new.txt");

File.Move(): 剪切一个文件;

eg:

File.Move(@"C:\Users\SpringRain\Desktop\new繁体字new.txt", @"D:\新来的.txt");

路径:

1.相对路径:文件相对于你可执行应用程序的路径;

2.决对路径:通过这个路径可直接在你电脑上找到这个文件的路径;

9. Path

Path.GetFileName(); 获取文件名但是包含扩展名

Path.GetFileNameWithoutExtensition();获取文件名但是不包括扩展名;

eg:

string filePath = @"C:\Users\SpringRain\Desktop\繁体字.txt";

#region Old Method老方法

//int index = filePath.LastIndexOf("\\");

//int index2 = filePath.LastIndexOf(".");

//string fileName = filePath.Substring(index + 1,index2-index-1);

#endregion

Console.WriteLine(Path.GetFileName(filePath));

Console.WriteLine(Path.GetFileNameWithoutExtension(filePath));

Path.ChangeExtension(): 改变文件后辍名;

eg:

Console.WriteLine(Path.ChangeExtension(filePath, "jpg"));

Path.GetFullPath(): 获得文件的绝对路径;

eg:

Console.WriteLine(Path.GetFullPath("1.txt"));

第三天

1. 类转换的关键字is和as

is (能不能转):

如果转换成功,则换回true,如果转换不成功,则返回false;

Person person = newStudent("学生", 11, '男', 100);

if (person isStudent)

{

((Student)person).Study();

}

else

{

Console.WriteLine("转换失败");

}

as:(尝试的转)

如果转换成功,则返回要转的对象,失败则返回null

Person person = newStudent("学生", 11, '男', 100);

Teacher teacher = person asTeacher;

if (teacher != null)

{

teacher.Teach();

}

else

{

Console.WriteLine("转换失败");

}

2.base:关键字

区别:

this:

1> 就代表当前类的对象

2> 调用当前自己类中的构造函数

base:

1> 指向父类的引用,可以调用父类的成员。

2> 子类继承父类的构造函数时,用于调父类的构造函数

base并不代表父类的对象,而是指向父类的一个引用

通过base关键字,我们可以调用父类的成员

publicnewvoid Test()//彻底的将父类的Test隐藏了子类调用不到父类的Test()了

{

Console.WriteLine("我是子类");

base.Test();

}

3. new

1> 把父类与子类同名的方法进行隐藏,子类把方法重写

2> 创建对象

Person类

publicvoid Test()

{

Console.WriteLine("我是父类");

}

Teache类

publicnewvoid Test()//彻底的将父类的Test隐藏了子类调用不到父类的Test()了

{

Console.WriteLine("我是子类");

base.Test();

}

4. ArrayList集合:

特点: 不需要考虑数组的长度

不需要考虑元素的类型和个数

常用的方法:

1> list.count : 实际包含的元素个数;

2> list.capcity: 可包含的数组个数(从4开始,进行2为递增)

3> list.Add(): 添加单个元素;

4> list.AddRange(): 添加一个数组

5> list.Clear(): 清除集合中所有的元素

6> list.Remove(“张三”): 写谁谁就被删掉了

7> list.RemoveAt(1): 根据下标删除集合中的元素;

8> list.RemoveRange(0,3): 删除一定范围内的元素

9> list.Insert(1,”我是新来的”);插入元素到指定1的位置

10> list.InsertRange(0, new string[] { "张三", "李四", "王二狗蛋儿" }): 插入一条数组

11> list.Sort() 进行升序排列

12> list.Rever() 反转整个数组

5. 装箱和拆箱

装箱:值类型---à引用类型

int n = 10;

object o = n;//装箱

拆箱:引用类型---à值类型

int n2 = (int)o;//拆箱

注意: 有继承关系的对象才能发生拆装箱,没有就不能发生拆装箱;

装箱什么类型,拆箱就必须什么类型

6.Hashtable字典集合(键--->字典的拼音目录;值--->汉字)

定义:存储数据的时候,采用的是键值对的方式来进行存储。

创建过程:

Hashtable ht = newHashtable(); //创建字典集合对象

ht.Add(1, "张三"); //给集合对象添加数据

Console.WriteLine(ht[1]); //根据键的值输出值

//我们使用foreach循环来对键值对集合进行遍历

foreach (var item in ht.Values) //如果ht.Keys就是把数组中所有键传入item中,最后根据ht[item]查询值

{

//Console.WriteLine("键{0}----值{1}",item,ht[item]);

Console.WriteLine(item); //item值

}

注意:1.在我们给Hashtable添加数据的时候,键必须是唯一的,而值是可以重复的;

if (!ht.ContainsKey(2)) //判断键是否重复

{

ht.Add(2, "新来哒");

}

else

{

Console.WriteLine("集合中已经存在相同的键");

}

2.键是可以重新赋值的。

7. var

称之为推断类型,能够根据值推断出值的类型

var number = 100;

var pi = 3.14;

var name = "张三";

var gender = '男';

var money = 5000m;

var b = true;

Console.WriteLine(number.GetType());

Console.WriteLine(pi.GetType());

Console.WriteLine(name.GetType());

Console.WriteLine(gender.GetType());

Console.WriteLine(money.GetType());

Console.WriteLine(b.GetType());

注意:本类型不建议使用,因为C#是一门强类型语言,就是对数据的类型必须有一个明确的定义。而且造成程序后期可读性差;

8. File: (using System.IO;//File类的命名空间)

常用函数:

File.Exist(): 判断指定的文件是否存在,返回bool类型;

File.Create(): 创建一个对象;

eg:

//创建文件之前,首先判断文件是否存在绝对路径

if (!File.Exists(@"C:\Users\SpringRain\Desktop\new.txt"))

{

File.Create(@"C:\Users\SpringRain\Desktop\new.txt");

}

File.Delete(): 删除一个文件;

eg:

File.Delete(@"C:\Users\SpringRain\Desktop\new.txt");

Console.WriteLine("删除成功");

File.Copy(): 复制一个文件;

eg:

File.Copy(@"C:\Users\SpringRain\Desktop\繁体字.txt", @"C:\Users\SpringRain\Desktop\new繁体字new.txt");

File.Move(): 剪切一个文件;

eg:

File.Move(@"C:\Users\SpringRain\Desktop\new繁体字new.txt", @"D:\新来的.txt");

路径:

1.相对路径:文件相对于你可执行应用程序的路径;

2.决对路径:通过这个路径可直接在你电脑上找到这个文件的路径;

9. Path

Path.GetFileName(); 获取文件名但是包含扩展名

Path.GetFileNameWithoutExtensition();获取文件名但是不包括扩展名;

eg:

string filePath = @"C:\Users\SpringRain\Desktop\繁体字.txt";

#region Old Method老方法

//int index = filePath.LastIndexOf("\\");

//int index2 = filePath.LastIndexOf(".");

//string fileName = filePath.Substring(index + 1,index2-index-1);

#endregion

Console.WriteLine(Path.GetFileName(filePath));

Console.WriteLine(Path.GetFileNameWithoutExtension(filePath));

Path.ChangeExtension(): 改变文件后辍名;

eg:

Console.WriteLine(Path.ChangeExtension(filePath, "jpg"));

Path.GetFullPath(): 获得文件的绝对路径;

eg:

Console.WriteLine(Path.GetFullPath("1.txt"));
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: