C#学习第十天
来源:互联网 发布:华气厚普数据导出 编辑:程序博客网 时间:2024/05/20 07:50
泛型:
协变:out T ,T只能用作函数返回值。
逆变:in T,T只能用作输入参数。
逆变协变更多内容:http://cnn237111.blog.51cto.com/2359144/902824
T varobj = default(T);如果T是引用类型,则default(T)=null,如果T是值类型,则default(T)等于对应的值类型默认值。
LINQ:
linq要求查询的对象实现IEnumerable接口!
linq语法中,from ailas in table select ailas;from的作用是为table起了一个别名(ailas)。
使用group a by a.属性 时,不能再使用select了。返回a的所有属性字段。
操作符重载:
1、不能更改操作符的优先性。例如+-x/等。
2、不能更改操作符的元数(一元 二元等)
3、有些操作符不能重载例如"."
重载时注意:
1、操作符必须是public的。
2、操作符必须是静态(static)的。操作符不具有多态性。不能使用abstract,virtual、override或sealed等修饰。
3、二元操作符必须有两个参数。
class Person { public String Name { get; set; } public String Sex { get; set; } public static Boolean operator ==(Person p1, Person p2) { return p1.Name.Trim() == p2.Name.Trim(); } public static Boolean operator !=(Person p1, Person p2) { return p1.Name.Trim() != p2.Name.Trim(); } public static Person operator +(Person p, String name) { p.Name+=name; return p; } public static Person operator +( String name,Person p) { p.Name += name; return p; } public override int GetHashCode() { return base.GetHashCode(); } public override bool Equals(object obj) { return base.Equals(obj); } }
使用:
Person p1 = new Person() { Name="张三", Sex="男" }; Person p2 = new Person() { Name = "李四", Sex = "女" }; Person pt = new Person() { Sex = "男", Name = "张三 " }; Console.WriteLine(p1 == pt); Console.WriteLine(p1!=p2); pt = "啊啊哈哈"+pt; pt = pt + "oo"; pt += "gogo";//+=会自动转换为pt = pt+"gogo" Console.WriteLine(pt.Name);
- C#学习第十天
- C#基础第十天
- C#学习第十天 文件操作、文件流
- 程序学习第十天
- 学习的第十天
- Java学习第十天
- .net学习第十天
- JAVA学习第十天
- rhce学习第十天
- 第十天学习笔记
- Java学习第十天
- Java学习第十天
- Python学习---第十天
- java学习笔记--第十天
- Js学习第十天----函数
- 设计模式学习第十天
- Python快速学习第十天
- python第十天学习记录
- linux系统安全简述
- Embedding Python in C/C++: Part I
- WIN32程序与MFC程序解决背景闪烁的异同
- Android crash log分析和定位
- 学生管理系统(图)
- C#学习第十天
- IntPoint and PluginMainThreadScheduler
- win7 休眠
- 安装Windows环境下的hadoop
- emule 多线程下载
- Thrift : the missing guide (中文翻译)
- 【转】MySQL 主从同步错误(error)解决(转)
- 联系看这里
- linux解压tar命令