泛型:
*是C#语言2.0和通用语言运行时的新特性
*利用参数化类型将类型抽象化,从而实现更为灵活的服用
优点:
*缓解了代码膨胀的情况
*提供了一个强类型的编程模型,类型安全
*值类型不再需要装箱操作
*性能的到提高
*代码可读性好
1.泛型方法
既可以放在普通类中也可以定义在泛型类中
访问修饰符[可选修饰符]返回类型 方法名<参数化类型>(参数列表){}
方法名(参数)://推断类型 根据给的类型推断出来他的参数化类型用的应该是什么
方法名<类型>(参数):
类型参数:习惯上用T或者T开头的单词 语法上符合C#命名规则即可
private static void Swap<T>(ref T n1,ref T n2)
{
T temp=n1;
n1=n2;
n2=temp;
}
2.泛型类
class 类名<T>{}
class 类名<X,Y>{}
3.默认值(defualt)
T t=defualt(T);
4.泛型约束
强迫类型遵守一定的规范
约束的语法:where T:constraint1,constraint2,where是关键字,contraint1,constraint2是约束内容
约束条件:
struct :值类型
class:引用类型
类名:此类或者其子类
接口:此接口或其实现类
new():必须有无参构造函数
类:
public class 类名<T>(T t)Where T:条件
方法:
public void 方法名<T>(T t)where T:条件
多个约束:
1/class/struct/baseclass 写到其他约束之前
2/new()写到其他约束之后
顺序:class (struct/baseclass) interface new()
5.泛型类的继承(实现)
public class Class1<T>:Class2<T>,IMyInterface<T>
{}
public class Class1<T>:Class2<String>,IMyInterface<T>
{}
泛型类继承泛型父类或实现泛型接口时,父类或接口中的参数化类型必须和当前类的参数化类型一致,或者使用具体类型.
6.泛型结构和泛型接口
Nullable<int>n=12;
Console.WriteLine(n);
n = null;
if (n.HasValue)
{
int num =n.Value;
}
Console.ReadKey();
6.窗体的常用属性
StartPosition: 窗体第一次出现的位置 CenterScreen
MaximizeBox:是否允许最大化 bool
MinimizeBox:是否允许最小化 bool
FormBorderStyle:设置窗体的边框和标题栏的外观行为 FixedSingle
Text : 设置标题栏的文字
Icon:设置标题栏的图标
WindowState:窗体初始可视状态
Backcolor:背景颜色
BackgroundImage:背景图片