【发布时间】:2014-08-07 11:11:55
【问题描述】:
我需要比较两个相同类型的实例。
public class Person
{
public int Age {get;set;}
public string Name { get;set;}
public static bool operator < (Person p1, Person p2)
{
return p1.Age < p2.Age;
}
public static bool operator > (Person p1, Person p2)
{
return p1.Age > p2.Age;
}
}
现在在 Main 我有代码:
Person o = new Person()
{
Age = 10,
Name = "Matin"
};
Func<Person, bool> test = person => person < o;
Person o2 = new Person()
{
Age = 9,
Name = "hehe"
};
Console.WriteLine(test(o2));
输出:真; 在我看来,第一个人大于第二个人。你能解释一下这种情况吗?
【问题讨论】:
-
这正是您的代码所说的 - 第一个人大于第二个人?您的 func 正在测试当前人 (o2) 是否小于第一人 (o)。所以你得到了准确的回应。
-
@KamilT 测试是 Func (lambda)
-
o在第二位,所以是正确的。你想要p => o < p -
你需要第一个人大于第二个,输出说第二个小于o(1st)。两者都是一样的。