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();回归音乐(摇滚)代码>了解基础知识-阅读有关学员的更多信息。这正是您在问题中所说的(我想从方法返回布尔值或字符串)