Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 具有特定类型的泛型列表上的扩展?_C#_Generics_Extension Methods - Fatal编程技术网

C# 具有特定类型的泛型列表上的扩展?

C# 具有特定类型的泛型列表上的扩展?,c#,generics,extension-methods,C#,Generics,Extension Methods,是否可以在泛型列表上创建一个扩展方法,例如使用特定类型的 List<MyClass> myList = new List<MyClass>(); myList<MyClass>.MyExtensionMethod(); List myList=new List(); myList.MyExtensionMethod(); MyExtensionMethod只适用于MyClass类型的列表,这一点很重要 我怀疑这是不可能的,那么有什么办法可以实现这一点呢?

是否可以在泛型列表上创建一个扩展方法,例如使用特定类型的

List<MyClass> myList = new List<MyClass>();

myList<MyClass>.MyExtensionMethod();
List myList=new List();
myList.MyExtensionMethod();
MyExtensionMethod只适用于MyClass类型的列表,这一点很重要

我怀疑这是不可能的,那么有什么办法可以实现这一点呢?

当然是:

public static void MyExtensionMethod(this List<MyClass> m)
publicstaticvoidmyextensionmethod(此列表为m)
不清楚您所说的
myList
是什么意思,但此方法适用于
List

的所有实例,请尝试以下方法:

 public static class ListExtensions
    {
        public static void ExtensionMethodName<T>(this List<T> list) where T : MyClass
        {
            //Code
        }

        // Or
        public static void ExtensionMethodName(this List<MyClass> list)
        {
            //Code
        }
    }
公共静态类ListExtensions
{
公共静态void ExtensionMethodName(此列表),其中T:MyClass
{
//代码
}
//或
公共静态void ExtensionMethodName(此列表)
{
//代码
}
}

为什么不试试呢?确切地说,你“怀疑是不可能的”工作得很好。编写扩展方法要比来这里询问更快。:)
myList
是一个变量名。不能将泛型参数添加到变量名称中。可以使用与编写任何其他扩展方法完全相同的方法来执行此操作。为什么不试试呢?