C#3.0新特性----扩展方法(Extension Methods)初探

本文介绍了C#3.0中的一项新特性——扩展方法。通过示例代码展示了如何为现有类型添加新方法,无需子类化或重新编译原始类型。扩展方法有助于实现鸭子类型的支持,并增强了.NET框架的LINQ查询功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近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
;
    }

}

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));
        }

    }
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值