您正在调用的System.out.println
方法是(Object)
重载,而不是(String)
。 PrintStream.println(Object)
对其参数调用toString()
(方法:直接或间接,除非参数为null
)。
,
没有魔术。如果深入研究该方法,最终将//assumed class for demonstration only
public class Data
{
public string name { get; set; }
public string desc { get; set; }
}
//extension method
public static class ListExtensions
{
public static string GetFirstProperty(this List<Data> list,Expression<Func<Data,string>> predicate)
{
//you can ignore the compilation here,if you use Func<Data,string> instead of Expression<Func<Data,string>>
var compiledSelector = predicate.Compile();
return list.Select(x => string.IsNullOrWhiteSpace(compiledSelector(x)) ? "Not Available" : compiledSelector(x)).FirstOrDefault();
}
}
var name = MainList.GetFirstProperty(x => x.name);
var desc = MainList.GetFirstProperty(x => x.desc);
显式调用。
toString
本文链接:https://www.f2er.com/2717760.html