-
对于不需要长时间存储,就是生命周期比较短的东西我们可以定义为结构,使用struct来进行声明,比如说我们人类吃的食物
struct food{
string name;
int weight;
int size;
}
查看全部 -
一个类只能单继承,继承自一个父类,但是是可以实现多个接口的,但是在写的时候是要按照下面的顺序来写的:继承的父类,实现的接口一,实现的接口二,,,,
virtual开头定义的方法是虚方法,父类里面定义了一个虚方法,然后继承他的子类可以用override重写这个方法,也可以不重写这个方法。
abstract开头定义的属性是抽象属性,abstract开头定义的方法我们称之为抽象方法,抽象方法只有函数声明是没有具体实现的函数体的,然后一个类里面如果有抽象方法或则是抽象属性的话,这个类是必须要声明为抽象类的,即abstract class A {};但是一个抽象类里面是可以有或则是没有抽象属性、方法的;
抽象类是可以抽象属性、方法和普通属性、方法共存的;
抽象类不能实例化,只能被继承的,所以一些共性是可以放在一个抽象类里面的。如果一个类继承了抽象类,那么是必须要在子类里面实现他的抽象方法的,要不然该子类也是一个抽象类,不能实例的
接口是一组函数的集合类似于,这些函数默认都是public,并且只有声明没有具体的实现函数体的,接口只能被实现,不能实例化
查看全部 -
接口里面的方法默认都是public的,并且是不可以实现的,就是是只有声明的是没有实现的函数体的,接口只能被实现,是不能实例化的,并且实现接口的类必须要实现该接口里面的方法的,并且在子类里面实现这个方法的时候是要在方法前面加上public的了
查看全部 -
class Dog:Pet,ww
{
//声明委托
public delegate void Handler();
//定义委托事件
public static event Handler NewDog;
public Dog(string name) : base(name)
{
if (NewDog != null)
{
//触发事件
NewDog();
}
}
}
class Client
{
//定义事件方法
public void WantADog()
{
Console.WriteLine("dog");
}
}
class Program
{
static void Main(string[] args)
{
Client client1 = new Client();
Client client2 = new Client();
//绑定事件方法
Dog.NewDog += client1.WantADog;
Dog.NewDog += client2.WantADog;
Dog dog2 = new Dog("A");
}
查看全部 -
class Program
{
//声明委托
delegate void Actcute();
static void Main(string[] args)
{
Actcute del = null;
Dog dog1 = new Dog("A");
Cat cat1 = new Cat("B");
del = dog1.WagTall;
del += cat1.innocentLook;
//lambda 表达式绑定匿名委托
del += () =>
{
Console.WriteLine("do nothing");
};
del();
查看全部 -
class Program
{
//声明委托
delegate void Actcute();
static void Main(string[] args)
{
Actcute del = null;
Dog dog1 = new Dog("A");
Cat cat1 = new Cat("B");
del = dog1.WagTall;
del += cat1.innocentLook;
del();
}
}
查看全部 -
//字典
Dictionary<string, Dog> dic = new Dictionary<string, Dog>();
dic.Add("A", new Dog("A"));
dic.Add("B", new Dog("B"));
dic.Add("C", new Dog("C"));
dic.Add("D", new Dog("D"));
dic["A"].name();
//堆栈 先进后出 后进先出
Stack<Pet> pets = new Stack<Pet>();
pets.Push(new Dog("A"));
pets.Push(new Cat("B"));
pets.Peek().name();
//弹出最后进入的对象
pets.Pop();
pets.Peek().name();
//队列 出队顺序与入队顺序相同
Queue<Pet> queue =new Queue<Pet>();
queue.Enqueue(new Dog("A"));
queue.Enqueue(new Dog("B"));
queue.Enqueue(new Dog("C"));
Pet pet = null;
pet = queue.Dequeue();
pet.name();
pet = queue.Dequeue();
pet.name();
pet = queue.Dequeue();
pet.name();
查看全部 -
List<Dog> list = new List<Dog>();
list.Add(new Dog("a"));
list.Add(new Dog("b"));
list.Add(new Dog("c"));
list.RemoveAt(2);
for(int i =0;i<list.Count;i++)
{
list[i].a();
}
查看全部 -
//约束范围 class,接口
public void IsHappy<T>(T target) where T:Pet,ww
{
Console.WriteLine(target.ToString());
}
//调用
Cat b = new Cat("66");
Dog dog = new Dog("A");
b.IsHappy<Dog>(dog);
查看全部 -
装箱拆箱
放入object和取出过程
查看全部 -
//对Cat类 进行扩展
static class aaa
{
static public void ab(this Cat cat)
{
Console.WriteLine("13:");
}
}
//调用
Cat b = new Cat("66");
b.ab();
查看全部 -
相当于类,单更轻便
struct fish
{
int weight;
}
查看全部 -
interface 定义接口
有方法无实现 默认范围为public 不可在加
abstract 定义抽象类
可抽象方法与普通方法共存
class Cat:Pet,com
先写继承后写接口,单继承多实现
查看全部 -
//加sealed 子类不能再继承
sealed override public void d()
{
}
查看全部 -
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp2
{
abstract class Pet
{
protected string _Name;
public Pet(string name)
{
_Name = name;
}
public void a()
{
Console.WriteLine("size:");
}
virtual public void b()
{
Console.WriteLine("fb:");
}
public void c()
{
Console.WriteLine(_Name);
}
abstract public void d();
}
class Cat:Pet
{
public Cat(string name) :base( name)
{
}
new public void a()
{
Console.WriteLine("13:");
}
override public void b()
{
base.b();
}
override public void d()
{
}
}
class Program
{
static void Main(string[] args)
{
//Console.Write("input:");
//string a = Console.ReadLine();
//Console.WriteLine(":" + a);
////得到字节长度
//Console.WriteLine("size:" + sizeof(int));
int[,] bb = new int[0,1];
Cat b = new Cat("66");
b.a();
b.b();
b.c();
Console.ReadKey();
}
}
}
查看全部
举报