C# 方法参数中的Func

C# 方法参数中的Func,c#,generics,C#,Generics,是否可以从func返回值 像这样 public interface IMusic { string Type { get; set; } string Name { get; set; } List<IMusic> Music { get; set; } } public class Rap : IMusic { public List<IMusic> Music { get; set; } public string Name

是否可以从
func
返回值

像这样

public interface IMusic
{
    string Type { get; set; }
    string Name { get; set; }
    List<IMusic> Music { get; set; }
}

public class Rap : IMusic
{
    public List<IMusic> Music { get; set; }
    public string Name { get; set; }
    public string Type { get; set; }
}

public class Mix : IMusic
{
    public List<IMusic> Music { get; set; }
    public string Name { get; set; }
    public string Type { get; set; }
}

public class Rock : IMusic
{
    public List<IMusic> Music { get; set; }
    public string Name { get; set; }
    public string Type { get; set; }
}

public class Program
{
    static void Main()
    {
        var r = Music<Rock>((a => a.Name));

        Console.WriteLine(r);
        Console.ReadLine();
    }

    static object Music<T>(Func<T, object> music)
    {
        return music;
    }
}
公共接口音乐
{
字符串类型{get;set;}
字符串名称{get;set;}
列出音乐{get;set;}
}
公共级说唱乐:IMusic
{
公共列表音乐{get;set;}
公共字符串名称{get;set;}
公共字符串类型{get;set;}
}
公共班级组合:音乐
{
公共列表音乐{get;set;}
公共字符串名称{get;set;}
公共字符串类型{get;set;}
}
公共级摇滚乐:IMusic
{
公共列表音乐{get;set;}
公共字符串名称{get;set;}
公共字符串类型{get;set;}
}
公共课程
{
静态void Main()
{
var r=音乐((a=>a.Name));
控制台写入线(r);
Console.ReadLine();
}
静态对象音乐(Func音乐)
{
回归音乐;
}
}
例如,当我在参数
i
中有func时,我想从方法返回布尔值或字符串


MethodName(a=>a.FirstName==“Test”)
=true是否可能

你想用名为
Music
的方法做什么?顺便说一下,这是一个糟糕的方法名称。我看不到任何比较和可能返回布尔值的内容,请发布完整的示例!例如,bro I试图从method返回func您将func传递给只返回该func的方法?这是没有用的。无论如何,如果需要这样做,那么需要将
静态对象
更改为
静态函数
。如果要执行该Func,则需要类型为
T
的对象。然后您可以编写
返回音乐(obj)
其中
obj
属于
T
类型。您的示例
Program.Main()
不使用任何接口。从方法返回函数与接口无关。您可以重新表述您的问题并删除所有不必要的代码。答案是,是的,您可以从方法返回
Func
。@Guffy我在
程序
部分没有看到接口。您需要了解Func是一个方法变量。你可以传递它,你可以执行它。当您编写
Func
时,这是一个接受T作为参数输入并返回对象的方法。因此,您需要在某个时刻执行
音乐
,为此,您需要向其传递类型为
T
的对象(在您的示例中为
Rock
)。所以你可以说:
var rock=new rock();回归音乐(摇滚)了解基础知识-阅读有关学员的更多信息。这正是您在问题中所说的(我想从方法返回布尔值或字符串)