Модераторы: Partizan, gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> вопрос по random'у 
:(
    Опции темы
archimed7592
Дата 31.10.2006, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 7
Всего: 93



Цитата(mr.DUDA @  31.10.2006,  18:30 Найти цитируемый пост)
derek работает сравнение строки с int-ом,
 smile хде такое увидел?
вообще 
Цитата(mr.DUDA @  31.10.2006,  18:30 Найти цитируемый пост)
и запихнуть одинаковые стринговые литералы в два разных object-а,
контрпример:
Код
            String s1 = "abc";
            String s2 = "abcd".Remove(3);
            Object o1 = s1;
            Object o2 = s2;
            Console.WriteLine("s1 = \"{0}\"\ns2 = \"{1}\"\ns1 {2} s2", s1, s2, o1 == o2 ? "==" : "!=");
единственный метод, которым можно проверить равны объекты или нет - это Equals. и при сравнении объектов типа Object оператором == он НЕ вызывается.
Код
            Console.WriteLine("s1 = \"{0}\"\ns2 = \"{1}\"\ns1 {2} s2", s1, s2, o1.Equals(o2) ? "==" : "!=");
выведет что немного иной результат, нежели вариант выше.
другое дело, когда сравниваешь s1 и s2 оператором == там всё ок потому, что его перегружают.


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
mr.DUDA
Дата 31.10.2006, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Цитата(archimed7592 @  31.10.2006,  16:44 Найти цитируемый пост)
хде такое увидел?

Ну строки со строками...

Цитата(archimed7592 @  31.10.2006,  16:44 Найти цитируемый пост)
контрпример:

Дык, это если присваивать не константную строку а результат действия над строкой (а-ля Remove), то да. Не-константы не интернируются и в пул не попадают. А вот если мы их так:

Код
using System;

class Program
{
    static void Main()
    {
        String s1 = "abc";
        String s2 = string.Intern("abcd".Remove(3));
        Object o1 = s1;
        Object o2 = s2;
        Console.WriteLine("s1 = \"{0}\"\ns2 = \"{1}\"\ns1 {2} s2", s1, s2, o1 == o2 ? "==" : "!=");
    }
}

то совсем другое дело, выведет "s1 == s2"  smile 

P.S. оффтоп пошёл, уважаемые.

Добавлено @ 18:03 
З.Ы. для интернированных строк сравниваются уже не сами строки, а ссылки на объект string.


--------------------
user posted image
PM MAIL WWW   Вверх
archimed7592
Дата 31.10.2006, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 7
Всего: 93



Цитата(mr.DUDA @  31.10.2006,  18:30 Найти цитируемый пост)
 запихнуть одинаковые стринговые литералы в два разных object-а, то сравнивать будет корректно.
Цитата(mr.DUDA @  31.10.2006,  19:00 Найти цитируемый пост)
Дык, это если присваивать не константную строку а результат действия над строкой (а-ля Remove), то да. Не-константы не интернируются и в пул не попадают.
Цитата(mr.DUDA @  31.10.2006,  19:00 Найти цитируемый пост)
З.Ы. для интернированных строк сравниваются уже не сами строки, а ссылки на объект string.
для объектов типа string всегда сравниваются строки (если конечно ссылки не равны...если равны, то сравнивать нечего). для объектов типа object всегда сравниваются ссылки. добавляя строку в пул ты получишь ссылку идентичную s1 и соответственно результат сравнения ссылок будет очевидным.

Цитата(mr.DUDA @  31.10.2006,  19:00 Найти цитируемый пост)
P.S. оффтоп пошёл, уважаемые.
ну ты же модер smile вынеси обсуждение в отдельный тред. вопрос очень интересный на самом деле.


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
derek
Дата 21.12.2006, 20:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 124
Регистрация: 16.7.2006

Репутация: нет
Всего: нет



опять наступаю на грабли listbox'а
почему не работает такой простой код - где я опять тупанул smile ?

Код

for (int i = 5; i <= 0; i--)
            {
                listBox2.Items.Add(listBox1.Items[i]);
            }


ошибки не выдает при компиляции. Просто не работает - ноль эффекта...
PM MAIL   Вверх
VisualProgrammerNET
Дата 21.12.2006, 20:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Почётный халявщик
**


Профиль
Группа: Участник
Сообщений: 461
Регистрация: 30.10.2005
Где: Зеленоград

Репутация: 4
Всего: 6



не <=, a >=

Я пьяный, могу ошибаться...  smile 


--------------------
3 ГОДА НА user posted image 
PM MAIL ICQ   Вверх
derek
Дата 21.12.2006, 21:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 124
Регистрация: 16.7.2006

Репутация: нет
Всего: нет



так вылетает с ошибкой
ArgumentOutOfRangeException
InvalidArgument=Value of '5' is not valid for 'index'.


PM MAIL   Вверх
archimed7592
Дата 21.12.2006, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 7
Всего: 93



ну тогда for (i = 5 - 1; i >= 0; --i) ...


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
derek
Дата 21.12.2006, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 124
Регистрация: 16.7.2006

Репутация: нет
Всего: нет



archimed7592, так работает. вообще не думал что ошибка в построении цикла. спасибо
PM MAIL   Вверх
mr.DUDA
Дата 21.12.2006, 22:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Цитата(derek @  21.12.2006,  20:24 Найти цитируемый пост)
archimed7592, так работает. вообще не думал что ошибка в построении цикла. спасибо


derek, не сочтите за хамство, но
Код
for (int i = 5; i <= 0; i--)


Означает "давайте будем отсчитывать от 5 до 0(или меньшего) до тех пор, пока у нас меньше или 0", а это ни разу не выполнится. Потому что отсчитывать начинаем от 5. А это больше чем 0. Не пройдёт ни одной итерации цикла. smile



--------------------
user posted image
PM MAIL WWW   Вверх
derek
Дата 21.12.2006, 23:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 124
Регистрация: 16.7.2006

Репутация: нет
Всего: нет



mr.DUDA, да-да, мне если честно стыдно  smile  smile 
PM MAIL   Вверх
-ser-
Дата 22.12.2006, 05:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 1.2.2005

Репутация: 5
Всего: 13



Цитата(derek @  29.10.2006,  22:54 Найти цитируемый пост)
массивы у меня заполняются не от 0 до N, а от 0 до 10-ти...и самих элементов каждого массива 10. так что там не может не быть хотя бы одного совпадения...


во-первых: заполнение от 0 до 9, если быть точнее.

во-вторых: теоретически совпадения может и не быть вообще, причем вероятность не такая уж и мизерная. Random совсем не гарантирует неповторение одинакового числа, тем более диапазон в нашем случае довольно узок.

в-третьих: если уж хотим сравнивать целые, используя ListBox, то используйте для сравнения хотя бы ListBox.IntegerCollection. Хотя ListBox по большому счету это вообще контрол и он предназначен совсем для других целей. По сути дела началось обсуждение работы самого контрола и вопроса как этим членом расколоть орех.
В нашем случае L1.Items[ i ] это object, давайте тогда и сравнивать объекты как и положено, например
Код
if( Comparer.DefaultInvariant.Compare( L1.Items[ i ], L2.Items[ j ] ) == 0 )
 хоть и это тоже оффтоп и глупость.


--------------------
"Тонкая, однако, работа." 
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0624 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.