C#中泛型类 泛型方法
2020-12-30 04:29
标签:运行 泛型 类型 mic 时长 rod 命名规范 get 高级 1,泛型好处:增加类型好处,带来编码的方便 用泛型类做一个简单的进栈,出栈 public class MyStack public MyStack(int size) this.size = size; if (stacPoint >= size) T data = this.stack[stacPoint]; static void Main(string[] args) Console.ReadKey(); 其他类型也是一样 2,约束类型的泛型类 //使用关键字where ProductList = new List //根据泛型类的要求设计参数 public string CourseName { get; set; } public string Name { get; set; } //运行结果 static void Main(string[] args) new Course(){ CourseName = ".Net-CS+BS高级工程师",Period = 6}, C#中泛型类 泛型方法 标签:运行 泛型 类型 mic 时长 rod 命名规范 get 高级 原文地址:https://www.cnblogs.com/m962263807/p/13280665.html
常见的泛型:泛型类和泛型方法,泛型委托(自定义委托,常见的泛型委托(Func,Action))
泛型类的规范:public class 类名
T:仅仅是一个占位符,只要符合c#命名规范即可,但一般使用T
T:表示一个普通的数据类型,在使用的时候用实际类型代替
T:泛型类可以在定义中包含多个任意类型参数,参数之间用多个逗号分隔,
例子:public MyGenericClass
{
private T[] stack;
private int stacPoint;
private int size;
{
this.stack = new T[size];
this.stacPoint = -1;
}
public void Push(T item)
{
{
Console.WriteLine("栈空间已满");
}
else
{
stacPoint++;
this.stack[stacPoint] = item;
}
}
public T Pop()
{
stacPoint--;
return data;
}
}
{
MyStack
//入栈
stack1.Push(1);
stack1.Push(2);
stack1.Push(3);
//出栈
Console.WriteLine(stack1.Pop());
Console.WriteLine(stack1.Pop());
Console.WriteLine(stack1.Pop());
}
class MyGenericClass2
where T1:struct //类型必须是值类型
where T2: class//类型必须是引用类型
where T3:new()//类型必须有一个无参数构造方法,且必须放到最后
//除此之外还有多种其他类型
//基类类型,接口类型等。。。
{
public List
public T3 Publisher { get; set; }
public MyGenericClass2() {
Publisher = new T3();
}
public T2 Buy(T1 num) {
//动态类型
dynamic uknow = num;
return ProductList[uknow];
}
}
class Course {
public int Period { get; set; }
}
class Teacher {
public int Count { get; set; }
}
{
//实例化泛型类型对象
MyGenericClass2
//给对象实行赋值
MyClass2.Publisher = new Teacher() { Name = "周老师", Count = 20 };
MyClass2.ProductList = new List
new Course(){ CourseName = ".Net-CS高级工程师",Period = 3},
new Course(){ CourseName = ".Net-BS高级工程师",Period = 3},
};
//调用方法对象
Course Mycourse = MyClass2.Buy(0);
string info = string.Format("我购买的书本有:{0} 时长:{1}个月 老师:{2}",
Mycourse.CourseName,
Mycourse.Period,
MyClass2.Publisher.Name);
Console.WriteLine(info);
Console.ReadKey();
}
上一篇:windows安装redis集群