列表可以存储任何类型的数据
列表就是系统提供的一个类
List list = new list();
列表可以存储任何类型的数据
列表就是系统提供的一个类
List list = new list();
索引器
定义索引器电脑方法:
public int this 【int index】
{
get{}set{}
}
使用索引器的方法:取值,赋值
运算器重载
索引器的使用在主函数中
Console.WriteLine(wk["Thur"]);
在类中 public int this[string day]
{
get
{ }
}、
索引器相对于普通函数书写跟整洁
operator 运算符重载关键字,后面跟要进行重载的运算符
子类继承重要
capacity获取list列表容量
count 获取列表长度
运算符重载
函数重载相当于重写
运算符重载相当于重新定义运算符的运算方法
比如,判断数据是否相等默认情况是根据判断数据的引用(地址)是否相等,想要重新定义==的功能根据值判断 >>运算符重载
声明函数 :
public static bool operator==(Students1,Student s2)
==和!=必须成对的写
public static bool operator !=(Student s1, Student s2)
{
bool result = s1 == s2;//程序的思路应该是多利用已有的资源,举一反三
//s1==s2只是一种运算
return !result;//返回与==运算相反的值,bool也可以取反 }
c#中可以重写的运算符有:==、!=、>、<、
所有的引用类型都需要用new去定义
for()
public int count
{
get
{
}
}
完结撒花
1.抽象类可以包含方法体,接口不能包含方法体,所以接口就不能包含普通带有函数体的函数了
2.抽象类是一个不完整的模板,他只能通过继承来实现构造对象,所以抽象类通常被称为抽象基类
3.接口也是一个不完整的模板,同样也不能够完成实例化(构造对象),
抽象类和接口的区别:抽象类可以用普通函数
new方法和override方法都相当于把父类的函数在子类重写一遍,只要是子类构造的,在调用函数的时候都会调用子类重写后的。new隐藏方法如果是用子类构造,父类声明的就会调用父类的方法(哪个声明的就用那个的方法new son()是构造father b=new son()是声明),virtual必须和override一起使用,但new可以单独使用
用子类构造的数据可以传给父类,在调用函数时会调用子类的例如a.Fun2(b),主要是看参数,也即是b是子类还是父类的,当参数是整数或者不是子类或者父类的,就看是谁调用的,也就是这里的a,如果是a调用的就执行父类的函数,如果是b调用的就执行b类重回后的函数
类实际上就是创建对象的一个模板
类的结构类似于结构体
包含数据成员和函数成员
函数成员提供了操作类中数据的某些功能
我们的每一个类是使用单独的一个文件保存的
一般情况下一个文件是可以包含多个类的,但一般情况下是一个文件一个类。
如何调用
对象本质上就是变量;
类名 变量名 =new 类名();
第一步 声明一个对象,
第二部 给这个对象赋值”给这个对象实例化“
结构体不需要new 对象需要new赋值。
对象必须得new出来,不能空赋值null;
一个类可以创建多个对象的,两个数据是互不干扰的,类只是个模板。
对象可以有多个的,类只需要有一个类
类就相当于模板,对象就相当于利用模板创造出来的一个实例的物品
private //私有的,只能访问类内部
访问元素
public T this[int index]
{
get{
return data[int index]
{
set
{
data[index]=value;
}
list[10]
List
一个命名空间下可以创建多个类的,只是我们习惯上一个类一个文件。
Lisa
Rose
Jiose
Zj'fi's'f'ji's
public void Insert(数据一数据二)
{
if(index<0||index>count -1){
if()
}
for(int i=count-1;i>)
集合类 列表List
List<int>list=new List<int>( ) ;
List<int> list=new List<int>( ) { 321,653,832 };
容量
添加
插入
匿名类型
v