Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
11 / 11 / 2
Регистрация: 12.02.2011
Сообщений: 88

Странно работает компилятор

27.02.2011, 10:56. Показов 1199. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вопрос N1
Имеется следующий код:

C#
1
2
3
4
5
6
 
A = new Array(Dim, MinValue, MaxValue);
B = new Array(Dim, MinValue, MaxValue);
 
TBFirstArray.Text = A.Display(A);
TBSecondArray.Text = B.Display(B);
к моменту вызова этой процедуры объекты A и B уже существуют.

вот код конструктора Array:

C#
1
2
3
4
5
6
7
8
9
10
   public Array(int Dim, int MinValue, int MaxValue)
        {
            Elements = new int[Dim];
 
            Random ElementValue = new Random();
            for (int i = 0; i < Dim; i++)
            {
                Elements[i] = ElementValue.Next(MinValue, MaxValue);
            }          
        }
Проблема вот в чем: если вызвать первый код, то объекты A и B окзываются одинаковыми. Но если поставить брэйкпойнт в строке A = new Array(Dim, MinValue, MaxValue);, и построчно выполнять код, то объекты A и B конструируются разные с различными значениями. В чем загвоздка?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.02.2011, 10:56
Ответы с готовыми решениями:

Странно работает счетчик
Подскажите плиз. У меня при наступлении условия в цикле вызывается сначала один метод, а потом через несколько минут второй метод. Так вот...

Маршаллинг работает странно на некоторых ПК
Делаю маршалинг из с++ dll Простейший тестовый проект: В с++ dll'ке одна export-функция: extern &quot;C&quot; void...

C# не работает компилятор
не компилирует програму. На рис 111 есть програма и смотрим на рис 2222. Ничево не происходить, што зделать ...

4
25 / 25 / 5
Регистрация: 11.11.2009
Сообщений: 56
27.02.2011, 11:03
class Random - это вроде бы псевдослучайные числа, то есть с одними и теми же всегда генерируется одна и та же последоватьельсть. Попробуй использовать один и тот же объект класса Random
Например так:
C#
1
2
3
4
5
6
public Array
{
    ....
    static Random ElementValue = new Random();
    ....
}
0
11 / 11 / 2
Регистрация: 12.02.2011
Сообщений: 88
27.02.2011, 11:17  [ТС]
да это-то ладно. вопрос в том, почему при построчном прогоне через отладчик числа в Elements у обоих объектов разные получаются... а без отладчика - одинаковые.

и причем вот что: если брэйкпойнт ставить на строчку с первым конструктором, то объекты конструируются с разными Elements[i], а если его влепить уже после конструкторов, то они уже одинаково сформированы...
0
 Аватар для BrumbleHorse
122 / 122 / 16
Регистрация: 18.09.2010
Сообщений: 212
27.02.2011, 12:27
Если нужно, чтобы массивы были разными при одинаковых входных данных размера, мин и макс значения можно поменять конструктор на такой:
C#
1
2
3
4
5
6
7
8
public Array(int Dim, int MinValue, int MaxValue,Random r)
        {
            Elements = new int[Dim];
            for (int i = 0; i < Dim; i++)
            {
                Elements[i] = r.Next(MinValue, MaxValue);
            }
        }
Соответственно при создании объекта в качестве параметра конструктора передайте Random с разным значением seed и все:
C#
1
2
3
4
5
6
7
8
9
10
11
12
                    Array A, B;
                    A = new Array(5, 10, 50,new Random(5));
                    B = new Array(5, 10, 50,new Random(6));
                    for(int i=0;i<A.Elements.Length;++i)
                    {
                        Console.Write("{0} ;",A.Elements[i]);
                    }
                    Console.WriteLine();
                    for (int i = 0; i < B.Elements.Length; ++i)
                    {
                        Console.Write("{0} ;", B.Elements[i]);
                    }
Добавлено через 3 минуты
Почему в первом варианте с отладчиком получаются разные элементы не знаю, но догадываюсь что это связано с особенностями класса Random (учитывая что классы - ссылочные типы)..
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
27.02.2011, 22:50
Цитата Сообщение от keetotko Посмотреть сообщение
Но если поставить брэйкпойнт в строке A = new Array(Dim, MinValue, MaxValue);, и построчно выполнять код, то объекты A и B конструируются разные с различными значениями. В чем загвоздка?
Если у вас в вотчах стоит выражение, то оно выполняется, таким образом без отладки вы выполняете каждую конструкцию один раз, если же пошагово - то те конструкции, которые находятся в окне Watches выполняются несколько раз
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.02.2011, 22:50
Помогаю со студенческими работами здесь

Странно работает / не работает кулер на видеокарте
Всем привет! Имею видеокарту geforce gtx 650 ti boost от производителя gainward. Пару месяцев назад начались проблемы с играми: видеокарта...

Wi-fi странно работает
Стоит дефолтный роутер от Ростелеком Sagemcom F@st 2804 v7, и вот, дня три назад wi-fi на айфоне стал тормозить: подключение есть, но...

Странно, но не работает Where IN (., .)
Здравствуйте. в таблице (SQLite) есть поле (типа TEXT) оно содержит некоторый набор слов (через запятую): &quot;красный, синий,...

Странно работает!
Вот код!Почему то когда заместо цифр 1,2,3,4,5...10.Ставишь допустим H,e,l,l,o, w,o,r,l,d. то программа выводит только Hello w и...

if, else if работает странно.
Написал программу html&gt; &lt;head&gt; &lt;title&gt;Roll Em!&lt;/title&gt; &lt;/head&gt; &lt;body&gt; &lt;div align=&quot;center&quot;&gt; &lt;h1&gt;Roll Em!&lt;/h1&gt; &lt;?php ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru