里氏转换
定义:
1.子类可以赋值给父类。
2.如果父类中装的是子类对象,那么可以将这个父类强转为子类对象。
//1.子类可以赋值给父类;如果有一个地方需要一个父类作为参数,我们可以给一个子类代替
Student S = new Student();
Person P = S;
//2.如果父类中装的是子类对象,那么可以将这个父类强转为子类对象
Student SS = (Student)P;//将P转化为Student对象
SS.StudentSayhello();
//Teacher T = (Teacher)P;//这样是不行的,因为P中不包含Teacher类的对象
//T.TeacherSayhello();
is和as的用法:
is:表示类型转换,如果转换成功返回true,失败则返回false
if (P is Student)
{
Student T = (Student)P;
T.StudentSayhello();
}
else
{
Console.WriteLine("转换失败");
}
as:表示类型转换,如果能够转换则返回对应的对象,否则返回一个null
Student SS = P as Student;//转换成功
Teacher T = P as Teacher;//转换失败
ArrayList集合
ArrayList List = new ArrayList();
List.Add("张三");//插入元素用add
List.Add(true);
List.Add(1);
List.Add(3);
List.Add(2);
List.Add('a');
List.AddRange(new int[] { 1, 2, 3 });//插入集合用addrange
List.Clear();//移除所有元素
List.Remove(true);//移除特定的元素
List.RemoveAt(0);//移除指定索引的元素
List.RemoveRange(0, 3);//移除一定范围的元素
List.Sort();//对集合进行排序
List.Reverse();//将这个集合顺序反转
List.Insert(1, '张');//在指定索引处插入元素
List.InsertRange(1, new[] { 1, 3, 2 });//在指定索引处插入集合
bool a= List.Contains('a');//判断某元素是否在集合中
Console.WriteLine(a);
for (int i = 0; i < List.Count; i++)
{
Console.WriteLine(List[i]);
}
Console.ReadKey();
Hashtable集合
在键值对集合中,我们是根据键去找值的。
键值对集合中键必须是唯一的,而值可以是重复的。
//创建一个键值对集合的对象
Hashtable ht = new Hashtable();
ht.Add(1, 1);
ht.Add(2, "张三");
ht.Add(3, "zhangsan");
ht.Add(false, "李四");
ht[3] = "王五";//会把键是3的替换掉
bool a = ht.ContainsKey(1);//判断是否包含指定的键,是就返回true
bool b = ht.ContainsValue("张三");//判断是否包含指定的值,是就返回true
ht.Clear();//移除所有元素
Console.WriteLine(a);
Console.WriteLine(b);
foreach (var i in ht.Keys)
{
Console.WriteLine("{0}的值是{1}",i,ht[i]);
}
foreach循环
foreach (var 变量声明 in 数组名)
foreach和for循环有两种不同:一是它没法取得当前元素在数组中的下标,二是不能改变元素,只能取得元素,在一定意义上它是“只读性遍历”。
Path
string str = @"E:\C#\1\zhang.txt";
string address = Path.GetFileName(str);//获得当前文件
string address = Path.GetFileNameWithoutExtension(str);//获得当前文件但是不包括扩展名
string address = Path.GetExtension(str);//获得文件的扩展名
string address = Path.GetDirectoryName(str);//获得文件所在的文件夹的路径
string address = Path.GetFullPath(str);//获得全路径
string address = Path.Combine(@"c:a/b/c/", @"d.txt");//将两个字符串组合成一个路径
Console.WriteLine(address);
File
File.CreateText(@"E:\C#\1\li.txt");//创建文件
File.Delete(@"E:\C#\1\li.txt");//删除文件
File.Copy(@"E:\C#\1\zhang.txt", @"E:\C#\li.txt");//复制文件
将字符数组转换成字符串:Encoding.Default.GetString();
将字符串转换成字符数组:Encoding.Default.GetBytes();
本文介绍了C#中的里氏转换概念,包括is和as的使用。接着讲解了ArrayList和Hashtable两种集合,强调键值对集合中键的唯一性。还探讨了foreach循环的特点,并提到了Path和File类在文件操作中的作用。

1244

被折叠的 条评论
为什么被折叠?



