Cam*_*llo 3 c# extension-methods list
我想添加一个方法来扩展我的List行为,但是我遇到了麻烦.我想在我正在处理它的类中使用'扩展'方法.我该怎么做?
我想要做:
class MyClass
{
public void DoSomething()
{
List<string> myList = new List<string>()
myList.Add("First Value");
myList.AddMoreValues(); //or myList += AddMoreValues() ??
}
private void AddMoreValues(this List<string> theList)
{
theList.Add("1");
theList.Add("2");
...
}
}
Run Code Online (Sandbox Code Playgroud)
上面的代码给出了错误:
必须在非泛型静态类中定义扩展方法
扩展方法必须是静态的,才能使用它们的方式.只需将static关键字添加到您的方法:
private static void AddMoreValues(this List<string> theList)
Run Code Online (Sandbox Code Playgroud)
但是最好把它放在一个单独的static类中并制作它public(以这种方式组织扩展方法更容易),例如:
public static class ListExtensions
{
public static void AddMoreValues(this List<string> theList)
{
theList.Add("1");
theList.Add("2");
...
}
}
Run Code Online (Sandbox Code Playgroud)
static根据C#规范的第10.6.9节,扩展方法需要在类中:
当方法的第一个参数包含this修饰符时,该方法被称为扩展方法.扩展方法只能在非泛型的非嵌套静态类中声明.扩展方法的第一个参数除此之外不能有任何修饰符,参数类型不能是指针类型.
| 归档时间: |
|
| 查看次数: |
2041 次 |
| 最近记录: |