gpt4 book ai didi

C# 扩展方法架构问题

转载 作者:太空狗 更新时间:2023-10-30 00:17:41 24 4
gpt4 key购买 nike

我最近问了这个问题: Compiler error referencing custom C# extension method

Marc Gravell 的回答很完美,它解决了我的问题。但这给了我一些思考......

如果Extension方法必须放在一个Static Class上,并且方法本身必须是静态的,为什么我们不能创建一个静态的Extension方法呢?

我知道标记为“this”的参数将用于允许访问我们正在扩展的对象的实例。我不明白的是为什么不能将方法创建为静态的...在我看来这是一个毫无意义的限制...

我的问题是:为什么我们不能创建一个可以作为静态方法工作的扩展方法?

最佳答案

我希望真正的答案很简单:没有好的用例。例如,优点是它可以在现有类型(它们本身不提供逻辑)上启用流畅的 API - 即

var foo = data.Where(x=>x.IsActive).OrderBy(x=>x.Price).First();

启用 LINQ:

var foo = (from x in data
where x.IsActive
order by x.Price
select x).First();

对于静态方法,这根本不是问题,因此没有理由;只需对第二种类型使用静态方法。

实际上,扩展方法不是正确面向对象的 - 它们是一种实用的滥用,以牺牲纯度为代价让生活更轻松。没有理由以同样的方式淡化静态方法。

关于C# 扩展方法架构问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/638850/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com