C#3.0新特性----扩展方法(Extension Methods)初探
来源:互联网 发布:.cn域名续费一年多少钱 编辑:程序博客网 时间:2024/06/03 02:47
最近Orcas Beta1刚出,C#3.0炒得越来越热,一些新特性也是相当诱人,这几天,把.net3.0的环境终于是搭上了, 配环境的经验以后再说,这里先谈一下,C#3.0里的一个新特性,Extension Methods扩展方法,个人理解,有点仿JavaScript里的Prototype,主要是不用重编译,就可对一个类型加入方法,引用类型和值类型都是可以的.
扩展方法允许开发人员往一个现有的CLR类型的公开契约(contract)中添加新的方法,而不用生成子类或者重新编译原来的类型。扩展方法有助于把今天动态语言中流行的对duck typing的支持之灵活性,与强类型语言之性能和编译时验证融合起来。
扩展方法促成了好多有用的使用场景,并使在作为Orcas一部分发布的.NET版本中引进的非常强大的LINQ查询框架成为可能。
下面是一个简单的示例:
public static class test
...{
public static bool fun(this string s)
...{
return s.Length>10&&s.Contains("test");
}
public static double cal(this int a)
...{
return a*3.14159*a;
}
public static bool In(this object o,IEnumerable c)
...{
foreach(object obj in c)
if(obj.Equals(o))
return true;
return false;
}
}
...{
public static bool fun(this string s)
...{
return s.Length>10&&s.Contains("test");
}
public static double cal(this int a)
...{
return a*3.14159*a;
}
public static bool In(this object o,IEnumerable c)
...{
foreach(object obj in c)
if(obj.Equals(o))
return true;
return false;
}
}
class必须是static,every method也必须是public static,其中的this是指要把方法加入的类型,如string就是添加到string类型中,前面两个方法随便做个测试,没什么意义的,第三个方法,是遍历一个集合,判断是否包含o.
下面是Main代码块:
class Program
...{
static void Main(string[] args)
...{
string s="first test";
Console.WriteLine(s.fun());
int a=42324;
Console.WriteLine(a.cal());
string[] str=...{"abcd","efgh","hijk","dog","cat","fire","lay"};
Console.WriteLine("dog".In(str));
}
}
...{
static void Main(string[] args)
...{
string s="first test";
Console.WriteLine(s.fun());
int a=42324;
Console.WriteLine(a.cal());
string[] str=...{"abcd","efgh","hijk","dog","cat","fire","lay"};
Console.WriteLine("dog".In(str));
}
}
- C#3.0新特性----扩展方法(Extension Methods)初探
- C#3.0新特性:扩展方法初探
- C#3.0 中的扩展方法 (Extension Methods)
- C#3.0 中的扩展方法 (Extension Methods)
- C#3.0 中的扩展方法 (Extension Methods)
- C#3.0 中的扩展方法 (Extension Methods)
- C#3.0 中的扩展方法 (Extension Methods)
- C#3.0 中的扩展方法 (Extension Methods)
- C# 3.0新特性之Automatic Properties(自动属性)、Object Initializers(对象初始化器)、Collection Initializers(集合初始化器)和Extension Methods(扩展方法)
- Extension Methods(扩展方法)
- 什么是扩展方法 (Extension Methods)?
- C# -- 扩展方法的应用(Extension Methods)
- Unity3d的C#扩展方法Extension methods应用吧
- 理解C# 3.0新特性之Extension方法浅议
- 理解C# 3.0新特性之Extension方法浅议
- C# 3.0新特性之扩展方法
- C# 3.0新特性之扩展方法
- C# 3.0新特性之扩展方法
- 破解教程 第二十课 如何写注册机
- 破解教程 第21课 一个新的破解方法---WinHex内存搜索破解法
- 在GridView分页时,维护CheckBoxes控件的选择状态
- 破解教程 第22课 一个新的破解方法---OllyDbg破解法
- 中国男足输球的理由
- C#3.0新特性----扩展方法(Extension Methods)初探
- 史上最容易听错的歌词大串烧
- 安装oracle后tomcat无法运行
- 日常生活中的物理知识
- 浅谈数据库设计技巧(上)
- 浅谈数据库设计技巧(下)
- LockWindowUpdate系列2:LockWindowUpdate是打算如何使用的?
- 一个十分小巧的批量图片格式转换工具(28K)
- .net 下文件加密和解密