[C#, Этюд] operator ==
От: nikov США http://www.linkedin.com/in/nikov
Дата: 16.08.09 11:19
Оценка: 29 (3)
using System;

class Program
{
    static void Main()
    {
        Console.WriteLine((Func<int>)"".GetHashCode == "".GetHashCode);
        Console.WriteLine((Func<int>)1.GetHashCode == 1.GetHashCode);
    }
}


Что напечатает эта программа? Можете ли вы объяснить результат?
Re: [C#, Этюд] operator ==
От: Аlexey  
Дата: 16.08.09 12:21
Оценка: 69 (4)
Здравствуйте, 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
Re[2]: [C#, Этюд] operator ==
От: nikov США http://www.linkedin.com/in/nikov
Дата: 16.08.09 12:23
Оценка:
Здравствуйте, Аlexey, Вы писали:

А>За счет интернирования строк ReferenceEquals("","") => true

А>В случае с целыми числами ReferenceEquals(1,1) => false

Правильно!
Re[2]: [C#, Этюд] operator ==
От: Константин Л.  
Дата: 17.08.09 07:00
Оценка:
Здравствуйте, Аlexey, Вы писали:

[]

Re[3]: [C#, Этюд] operator ==
От: s.and  
Дата: 18.08.09 11:18
Оценка:
Здравствуйте, nikov, Вы писали:

N>Здравствуйте, Аlexey, Вы писали:


А>>За счет интернирования строк ReferenceEquals("","") => true

А>>В случае с целыми числами ReferenceEquals(1,1) => false

N>Правильно!


Хм... Легкий этюд. Обычно вы задаете действительно заковыристые этюды с неочевидным результатам...
Re[4]: [C#, Этюд] operator ==
От: sada12  
Дата: 18.08.09 15:40
Оценка:
Здравствуйте, s.and, Вы писали:

SA>Хм... Легкий этюд. Обычно вы задаете действительно заковыристые этюды с неочевидным результатам...


А мне понравился, я не знал о такой особенности. Ждем следующего.
Re[5]: [C#, Этюд] operator ==
От: Воронков Василий Россия  
Дата: 18.08.09 15:47
Оценка:
Здравствуйте, sada12, Вы писали:

SA>>Хм... Легкий этюд. Обычно вы задаете действительно заковыристые этюды с неочевидным результатам...

S>А мне понравился, я не знал о такой особенности. Ждем следующего.

Ну а как бы без нее отписка от событий работала еще начиная с 1.0?

button.Click -= new EventHandler(Button_OnClick);
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.