所以我有我的代碼的簡單示例,我無法找到想法如何重寫它。 代碼:Func和不能隱式轉換類型
class Program
{
static void Main(string[] args)
{
var cat = new Cat();
cat
.ToFeed(arg => LikeMilk(1), c => c.Inc())
.ToFeed(arg => LikeMilk(2), c => c.Inc());
}
private static bool LikeMilk(int liters)
{
return liters <1;
}
}
public class Cat
{
private int Weith { get; set; }
public void Inc()
{
Weith++;
}
public Cat ToFeed(Func<int, bool> predicate, Action<Cat> action)
{
if (predicate) // Error: Cannot implicitly convert type 'System.Func<int,bool>' to 'bool'
action(this);
return this;
}
}
}
當然我可以改變簽名ToFeed
到ToFeed(bool predicate, Action<Cat> action),
但我並不想這樣做。 我知道我必須添加int參數來調用謂詞,但我已將它添加到Main()
我該如何解決此問題?
感謝
沒問題。順便說一句...你也可以簡單地在主函數中寫入:.ToFeed(LikeMilk,c => c.Inc())。我沒有寫上述內容,因爲我想強調參數傳遞;) – Christian 2011-05-23 09:35:36