C#与.NET4 高级程序设计-----语言特性 学习笔记
来源:互联网 发布:网络查询名下有无公司 编辑:程序博客网 时间:2024/05/22 10:56
1.重载操作符
C#提供operator 关键字来允许自定义类型对内建操作符做出不同的反映,Operator关键字只能用在静态方法上。
[],() 操作符不能被重载。
伪代码:
public class Point
{
public static Point operator + (Point p1,int number)
{
return new Point(p1.x+number);
}
}
Point myPoint=new Point();
myPoint=myPoint+10;
重载操作符通常仅在构建实用工具类型时才使用,字符串、点、矩形等都是很好的选择。使用操作符会使开发人员更难理解该类型的功能,只在需要的时候才使用。
2.扩展方法
当我们写了一个类,里面字段,方法什么都写好了,然后经过编译器编译进入.net程序集,如果还需为这个类添加、修改新方法时,我们必须 修改完毕后重新编译进.net程序集内,这样做是不是很不灵活。
在.net 3.5 中引入扩展方法的概念,可以对已编译的(类,结构,接口) 和 对即将编译的类型,不需要直接更改的情况下,获得功能上的扩展。使用这个新特性 可以在不修改 原有(类,结构,接口)定义时,添加新功能,同时这些方法将独立分开存放。
*注:扩展方法不会真正的改变编译后的代码!其实它只在当前应用程序的上下文中为类型添加新成员。
扩展方法的定义:
1.扩展方法必须定义在静态类里的静态方法中。
2.所有的扩展方法的第一个参数必须使用this作为参数
3.每一个扩展方法只可以被内存中正确的实例调用
public static Class ExtensionMethodDemo
{
public static void DisplayMethod(this Object obj)
{
Console.WriteLine(obj.GetType().Name)
}
}
private static void Main(string[] args)
{
int myInt=1000;
//实例调用扩展方法
myInt.DisplayMethod();
//静态调用扩展方法
ExtensionMethodDemo.DisplayMethod(myInt);
}
使用扩展方法扩展接口
interface IOperation
{
int Add(int x,int y);
}
Class MyCalc:IOperation
{
public int Add(int x,int y)
{
return x+y;
}
}
这时我们为接口添加一个新的Sub()方法。
static Class MathExtensions
{
public static int Sub(this IOperation operation,int x,int y)
{
return x-y;
}
}
MyCalc myCalc=new MyCalc();
Console.WriteLine(myCalc.Add(1,2).ToString());
//新添加的接口方法
Console.WriteLine(myCalc.Sub(1,2).ToString());
- C#与.NET4 高级程序设计-----语言特性 学习笔记
- C#与.NET4 高级程序设计-----委托、事件 学习笔记
- C#与.NET4 高级程序设计 学习笔记 文章导航
- 读书笔记:《C#与.NET4高级程序设计》-核心部分
- C#学习笔记(三)—–C#高级特性中的委托与事件(上)
- C#学习笔记(三)—–C#高级特性中的委托与事件(中)
- C#学习笔记(三)—–C#高级特性中的委托与事件(下)
- C#学习笔记(三)—–C#高级特性中的委托与事件:关于事件
- C# 学习笔记 数据库 简介 (书:C#与.NET4 第21章上)
- C# 学习笔记 数据库 连接式 (书:C#与.NET4 第21章下)
- C# 学习笔记 数据库 断开连接层 (书:C#与.NET4 第22章)
- C# 学习笔记 数据库 Entity Framework (书:C#与.NET4 第23章)
- c#中的高级语法(.Net4)
- 高质量程序设计指南-c/c++语言:笔记之C++函数的高级特性
- javascript高级程序设计学习笔记
- JavaScript高级程序设计 学习笔记
- javascript高级程序设计学习笔记
- JavaScript高级程序设计--学习笔记
- Linux NTP配置详解 (Network Time Protocol)
- it人生
- 磁盘配额
- 点击一个按钮修改td的值
- 十评联想之三:为什么联想完全可以走“中国式苹果”道路?
- C#与.NET4 高级程序设计-----语言特性 学习笔记
- 恢复误删数据(SQL Server 2000)--Log Explorer
- C#文件复制与删除
- 清除sqlserver数据库日志文件
- [算法题] 求数组的子数组之和的最大值
- [算法题] 求数组的子数组之和的最大值
- [算法题] 求数组的子数组之和的最大值
- vs2008安装部署工程制作教程
- System Worker Threads