Pull to refresh

Comments 30

а почему это должно работать? создаются два объекта, естественно, что у них будут разные адреса
хм… да, точно.
а вот Console.WriteLine("{0}", x == y); выведет True
тогда бы не было этюда )
таких объектов слишком много
я конечно на сисярпе не пишу, но моюет быть

var x = new Integer(1);
var y = new Integer(1);

?
Решение 1. Console.WriteLine(«True», object.ReferenceEquals(x, y)); //u r using std frmwork, ya!
Решение 2. Console.WriteLine("{0}", True); //YO DAWG I HEARD U LIKE TRUTH!
поздравляю, Вы нашли первое решение )
а существуют другие решения с «не-строками»? :-)
я знаю по крайней мере еще одно, строк оно не касается
ещё new System.Nullable()
парсер съел скобки:
new System.Nullable<int>()
да, правильно
Решили одновременно с goodbit
вот с Nullable понятно — этот ответ базируется на понимании CLR, а вот знания о String(' ', 0) — имхо бессмысленны :-)
потому как это специфичная оптимизация компилятора, не более
в CLR есть такая вещь как интернирование строк. это не опитимизация компилятора.
если использовать new string(' ', 1), это не будет работать
потому замечание вполне резонное
пардон. тут не интернирование.
просто конструктор
[MethodImplAttribute(MethodImplOptions.InternalCall)]
public extern String(char c, int count);
при равенстве второго аргумента нулю возвращает ссылку на String.Empty

Но компилятор тут опять же непричём, всё дело с clr.
UFO just landed and posted this here
да, с этим я согласен
но для полноты задачи я должен был указать, что знаю два решения
угу :-) подобные задачи обычно носят спортивный подтекст :-) сама задача, безусловно — хорошая и полезная. хотим ещё :-)
var x = new Nullable();
var y = new Nullable();
Console.WriteLine("{0}", ReferenceEquals(x, y));
Извините,
var x = new Nullable();
var y = new Nullable();
Console.WriteLine("{0}", ReferenceEquals(x, y));
Хмм… в после Nullable должны были быть угловые скобки с шаблоном. Но они не про печатались.
хех, одновременно # ;)
var x = new T(...) ? null : null;
var y = new T(...) ? null : null;


=)
вы нарушаете одно из условий )
«В x и y сохраняется ровно то значение, которое вернул оператор new. „
Сначала подумал о нарушении и в случае Nullable. Ошибся. Не то значение лишь попадает в ReferenceEquals.
Sign up to leave a comment.

Articles

Change theme settings