我的老师要求我们调查扩展类是什么,但我似乎无法在MSDN或Google上找到任何内容。有什么帮助吗?
答案 0 :(得分:18)
在正式的C#术语中没有“扩展类”这样的东西。它可能意味着定义extension methods的类(这不是什么特别的,它只是一个简单的static
类。)
答案 1 :(得分:7)
您的老师也可能在谈论partial classes ...
答案 2 :(得分:3)
从技术上讲,“扩展类”不是什么。在白话中,某人可以使用它来引用旨在存储extension methods的类。扩展方法是用于看起来像类的实例方法的方法,但它们是静态类中的真正静态方法,用于增强和封装某些功能。当您尝试在无法直接修改的类型上扩展某些功能并添加方法时,它们特别有用。此外,它们通常与泛型类型(特别是在.net 3.5框架内)一起使用,以使用特定接口提供的方法扩展功能。
答案 3 :(得分:2)
扩展方法可让您“添加” 没有的现有类型的方法 创建一个新的派生类型, 重新编译或以其他方式修改 原始类型。扩展方法 是一种特殊的静态方法, 但他们被称为好像他们一样 扩展类型的实例方法。 对于用C#编写的客户端代码 Visual Basic,没有明显的 呼叫之间的区别 扩展方法和方法 实际上是在一个类型中定义的。
答案 4 :(得分:1)
C#中的Extension类可以简单地是子类(继承并向基类型或接口添加更多功能)或静态类。
答案 5 :(得分:0)
我不知道扩展类是否存在。但扩展方法就在那里。 试试这个 Extension Method
答案 6 :(得分:0)
我知道这个问题有点老了但是当我读到这个问题时,我想到的一件事是Martin fowler的重构书。在第7章在对象之间移动要素中,他描述了一种名为引入本地扩展的重构。在那里,他谈到创建一个扩展类,它只不过是一个子类或一个对象的包装器。此扩展类的目的是扩展现有类的功能,如Date
(Java类Date
而不是。DateTime
类.Net实际上是密封的。)
这里的其他一些答案是指扩展方法,它似乎是使用重构引入外来方法的另一种方式。我不确定这一点,所以我可能会错在这里。
我认为这本书是1999年编写的,大多数的例子都是用Java编写的,所以也许这与.Net没什么关系,但我想这个概念是普遍的。
答案 7 :(得分:0)
我能想到的最接近扩展类的东西是例如Microsoft的ExceptionExtensions类。 https://docs.microsoft.com/en-us/previous-versions/msp-n-p/ff654014(v=pandp.10)
如果您在具有该名称的类中创建自己的方法,则可以从Exception对象访问该方法。
public static class ExceptionExtensions
{
public static String myMethod(this Exception ex)
{
return ("Hi!");
}
}
以这种方式访问它:
catch(Exception ex)
{
String message = ex.myMethod();
}