刚才我读到了扩展方法.我在静态类中创建了静态方法,它的工作正常.
static class ExtensionMethods
{
public static string splitFirstName(this string strName)
{
return strName.Split(" ".ToCharArray())[0];
}
}
Run Code Online (Sandbox Code Playgroud)
但是如果我在Nonstatic类中创建静态方法它不起作用.
class NonStaticCls
{
public static string splitFirstName(this string strName)
{
return strName.Split(" ".ToCharArray())[0];
}
}
Run Code Online (Sandbox Code Playgroud)
请告诉我为什么它不在非静态课堂上工作.
请告诉我为什么它不在非静态课堂上工作.
因为这就是指定扩展方法的方式.它们必须在非嵌套的非泛型类中声明.
从C#5规范的第10.6.9节:
当方法的第一个参数包含this修饰符时,该方法被称为扩展方法.扩展方法只能在非泛型的非嵌套静态类中声明.扩展方法的第一个参数除此之外不能有任何修饰符,参数类型不能是指针类型.
为什么要在非静态类中声明它?你想要实现什么,使用静态类无法实现?(我也只是约想象一些可能性,但他们没有事情,我曾经想在扩展方法做我自己......)
| 归档时间: |
|
| 查看次数: |
398 次 |
| 最近记录: |