using System;
class Program
{
static void Main()
{
Console.WriteLine((Func<int>)"".GetHashCode == "".GetHashCode);
Console.WriteLine((Func<int>)1.GetHashCode == 1.GetHashCode);
}
}
Что напечатает эта программа? Можете ли вы объяснить результат?
Здравствуйте, nikov, Вы писали:
N>N>using System;
N>class Program
N>{
N> static void Main()
N> {
N> Console.WriteLine((Func<int>)"".GetHashCode == "".GetHashCode);
N> Console.WriteLine((Func<int>)1.GetHashCode == 1.GetHashCode);
N> }
N>}
N>
N>Что напечатает эта программа? Можете ли вы объяснить результат?
Напечатает:
true
false
В пункте спецификации "7.9.8 Delegate equality operators" для элементов списка вызовов делегата написано:
• If two invocation list entries both refer to the same non-static method on the same target object (as defined by the reference equality operators) then the entries are equal.
За счет интернирования строк ReferenceEquals("","") => true
В случае с целыми числами ReferenceEquals(1,1) => false
Здравствуйте, Аlexey, Вы писали:
[]
Здравствуйте, s.and, Вы писали:
SA>Хм... Легкий этюд. Обычно вы задаете действительно заковыристые этюды с неочевидным результатам...
А мне понравился, я не знал о такой особенности. Ждем следующего.
Здравствуйте, sada12, Вы писали:
SA>>Хм... Легкий этюд. Обычно вы задаете действительно заковыристые этюды с неочевидным результатам...
S>А мне понравился, я не знал о такой особенности. Ждем следующего.
Ну а как бы без нее отписка от событий работала еще начиная с 1.0?
button.Click -= new EventHandler(Button_OnClick);