Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.89/19: Рейтинг темы: голосов - 19, средняя оценка - 4.89
 Аватар для Дмытро
2 / 2 / 1
Регистрация: 01.04.2013
Сообщений: 259

Подскажите пожалуйста что означает эта строка X x2;?

01.04.2013, 20:23. Показов 4001. Ответов 35
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите пожалуйста что означает эта строка X x2;?
вот текст программы:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// Ссылка на базовый класс может указывать на
// объект производного класса.
using System;
class X {
public int a;
public X(int i) {
a = i;
}
}
class Y : X {
public int b;
public Y(int i, int j) : base(j) {
b = i;
}
}
class BaseRef {
public static void Main() {
X x = new X(10);
X x2;
Y y = new Y(5, 6);
x2 = x; // OK, обе переменные имеют одинаковый тип.
Console.WriteLine("x2.a: " + x2.a);
x2 = y; // Все равно ok, поскольку класс Y
// выведен из класса X.
Console.WriteLine("x2.a: " + x2.a);
// Х-ссылки "знают" только о членах класса X.
x2.a = 19; // ОК
// x2.b = 27; // Ошибка, в классе X нет члена b.
}
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.04.2013, 20:23
Ответы с готовыми решениями:

что означает эта строка:
что означает эта строка: Console.WriteLine("a.x {0}, b.x {1}", a.x, b.x);? // Копирование структуры. using System; // Определяем...

подскажи пожалуйста что означает эта запись?
string str = vvod.Split(new Char { ' ', ',', '.', ':', '!', '?', ';' }, StringSplitOptions.RemoveEmptyEntries);

Скажите пожалуйста, что значит эта строка в программе?
Что значит эта строка - static int CheckInput(int b1, string Digit) ??? В этой программе : using System; using...

35
02.04.2013, 18:05
Студворк — интернет-сервис помощи студентам

Не по теме:

loro, В Питере же все чрезвычайно вежливые и культурные люди. Говорят, даже когда бьют, извиняются. :)
А ты откуда такой?

0
 Аватар для LeniumSoft
1454 / 847 / 150
Регистрация: 06.06.2012
Сообщений: 2,370
02.04.2013, 18:08
Цитата Сообщение от IamRain Посмотреть сообщение
В Питере же все чрезвычайно вежливые и культурные люди. Говорят, даже когда бьют, извиняются.
А ты откуда такой?

Не по теме:

Ну у него ещё есть время извиниться! :)

0
Заблокирован
02.04.2013, 18:32
Цитата Сообщение от Дмытро Посмотреть сообщение
X x = new X(10);
C#
1
2
3
 X x2;
 Y y = new Y(5, 6);
 x2 = x; // OK, обе переменные имеют одинаковый тип.
Как это не обидно кому то звучит но kolorotur ответил правильно.
А именно то, что пока переменной объявленной в методе не присвоено значение, мы не знаем , что там находится, именно поэтому компилятор выдает ошибку при попытке чтения подобных переменных.
А правило гласит вот, что : каждую объявляемую переменную необходимо инициализировать всегда, перед ее использованием.
Исключение только одно, когда переменная объявлена полем класса, тогда компилятор автоматически присваивает значимым типам 0, а ссылочным null
0
Администратор
Эксперт .NET
 Аватар для tezaurismosis
9674 / 4826 / 763
Регистрация: 17.04.2012
Сообщений: 9,664
Записей в блоге: 14
02.04.2013, 19:10
Цитата Сообщение от Urety Посмотреть сообщение
А именно то, что пока переменной объявленной в методе не присвоено значение, мы не знаем , что там находится
А отладчик знает

Цитата Сообщение от kolorotur Посмотреть сообщение
tezaurismosis, откуда вы знаете, что значение переменной x2 на момент ее объявления в методе равняется null?
Я понял это как хитрую подколку - я употребил неправильный предлог. В тот момент когда я объявляю переменную, я не могу знать, какое у неё значение. Тоже самое можно сказать о закрытом ящике - я не могу сказать что в нём в момент открывания - я скажу это, когда открою его.
0
02.04.2013, 19:23

Не по теме:

Цитата Сообщение от loro Посмотреть сообщение
Пользователь получил красную карточку за это сообщение.
Последний раз редактировалось KOPOJI; Сегодня в 22:10. Причина: мат
Ну вот, извинился

0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
02.04.2013, 19:59
tezaurismosis, варианта всего 2:
1) имелось ввиду, что есть одноименное поле класса x2, тогда на момент создания в x2 будет значение, но потом мы его скроем локальным значением
2) kolorotur обшибся и не заметил словосочетания class, подумав, что может быть в том числе и структура.
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
02.04.2013, 21:07
Ого, на две страницы устроили обсуждение
Прямо вброс какой-то получился.

Правильный ответ: зависит от того, включен ли оптимизатор на момент компиляции.
Если он выключен, то значение будет null, если включен, то значение ссылочной переменной не определено до ее инициализации (оптимизатор экономит инструкции на обнуление памяти, выделенной в стеке под ссылку).
Собственно, на это и был намек, т.к. автор поста не указал об использовании оптимизатора в его проекте.

Ну и поэтому же компилятор запрещает использовать непроинициализированную переменную — кто его знает, что в ней там прописано по умолчанию. Тут товарищ Urety правильно заметил.

Цитата Сообщение от tezaurismosis Посмотреть сообщение
А отладчик знает
Не верьте в таких вещах отладчику — под отладчиком приложение работает немного иначе.
1
Заблокирован
02.04.2013, 22:01
Цитата Сообщение от kolorotur Посмотреть сообщение
Ого, на две страницы устроили обсуждение
Прямо вброс какой-то получился.

Правильный ответ: зависит от того, включен ли оптимизатор на момент компиляции.
Если он выключен, то значение будет null, если включен, то значение ссылочной переменной не определено до ее инициализации (оптимизатор экономит инструкции на обнуление памяти, выделенной в стеке под ссылку).
Собственно, на это и был намек, т.к. автор поста не указал об использовании оптимизатора в его проекте.

Ну и поэтому же компилятор запрещает использовать непроинициализированную переменную — кто его знает, что в ней там прописано по умолчанию. Тут товарищ Urety правильно заметил.


Не верьте в таких вещах отладчику — под отладчиком приложение работает немного иначе.

Есть правило, как можно использовать переменные и его никак не обойти. Выше мною и было сказано.
Можно думать, что в черном ящике ключи от машины, но смысл об этом думать, если открыть его никогда не получится.
Откуда остальная информация неизвестно, наверно автор увидел что показывает результат при пошаговом выполнении, ну а дальше так решил.

Добавлено через 5 минут
Хотел добавить. Холивары мне никчему. Я считаю что ответил правильно. Если вы не согласны, имейте свое мнение.
Хотя я думаю, что предмета для спора нет.

Добавлено через 8 минут
Цитата Сообщение от tezaurismosis Посмотреть сообщение
А отладчик знает
Вложение 251453
Если исходить из решения на основе результата, который мы не можем получить, то мы никогда не узнаем что там, но если то, что там показывает вам "греет душу", то пусть.
Сделано, в том числе, для того, чтобы программисты делали меньше ошибок. Когда ты ее сам инициализировал, ты уже помнишь об этом и тд.
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
02.04.2013, 22:28
Цитата Сообщение от Urety Посмотреть сообщение
Есть правило, как можно использовать переменные и его никак не обойти. Выше мною и было сказано.
Бесспорно, о чем и речь: компилятор не позволяет использовать непроинициализированную переменную именно потому, то неизвестно, что в ней может храниться до инициализации.

Цитата Сообщение от Urety Посмотреть сообщение
Можно думать, что в черном ящике ключи от машины, но смысл об этом думать, если открыть его никогда не получится.
Если исходить из решения на основе результата, который мы не можем получить, то мы никогда не узнаем что там
Отчего же?
Черный ящик можно приоткрыть и заглянуть внутрь.

Цитата Сообщение от Urety Посмотреть сообщение
Холивары мне никчему.
Холивары — это из разряда "мне нравится", то есть вкусовщина.
Обсуждение технических деталей реализации языка сложно назвать холиваром.
0
Заблокирован
02.04.2013, 22:38
Цитата Сообщение от kolorotur Посмотреть сообщение
Отчего же?
Черный ящик можно приоткрыть и заглянуть внутрь.
Да, можно узнать, многими путями.
Но если исходить из решения на основе результата, который мы не можем получить, то для нас это черный ящик (в программе).
Имелось это ввиду.
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
02.04.2013, 22:49
Цитата Сообщение от Urety Посмотреть сообщение
Но если исходить из решения на основе результата, который мы не можем получить, то для нас это черный ящик (в программе).
Дык о чем и речь.
Отсюда и мой вопрос товарищу tezaurismosis об уверенности в значении переменной на момент ее создания.

Если рассматривать вопрос с позиции "как это реализовано конкретно в данной версии компилятора/рантайма", то значение может быть null/мусор, в зависимости от.
Но если его рассматривать с точки зрения спецификации языка, то значение ссылочной переменной до инициализации не определено.
Мне кажется, мы говорим об одном и том же.
0
Администратор
Эксперт .NET
 Аватар для tezaurismosis
9674 / 4826 / 763
Регистрация: 17.04.2012
Сообщений: 9,664
Записей в блоге: 14
03.04.2013, 15:31
Цитата Сообщение от kolorotur Посмотреть сообщение
Правильный ответ: зависит от того, включен ли оптимизатор на момент компиляции.
Если он выключен, то значение будет null, если включен, то значение ссылочной переменной не определено до ее инициализации (оптимизатор экономит инструкции на обнуление памяти, выделенной в стеке под ссылку).
Вот и ответ. Не сумев ранее найти его, подался в философию
Цитата Сообщение от Urety Посмотреть сообщение
но если то, что там показывает вам "греет душу", то пусть.
Отладчик мне всегда греет душу, он просто няшка
0
 Аватар для Дмытро
2 / 2 / 1
Регистрация: 01.04.2013
Сообщений: 259
03.04.2013, 20:03  [ТС]
Так это создается объект или переменная что-то никак не могу разобратся
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
03.04.2013, 20:22
Дмытро, объект == переменная, тип == класс, это ООП,
Кликните здесь для просмотра всего текста
детка
1
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
03.04.2013, 22:33
Цитата Сообщение от Psilon Посмотреть сообщение
объект == переменная, тип == класс
Я бы сказал, что объект==экземпляр, ссылка==переменная, тип==класс.

С вашего позволенья
1
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
03.04.2013, 23:16
kolorotur, может быть Это уже дебри.

Не по теме:

А то тут у нас тоже на форуме одном, начинали с известного в поледнее время казуса, когда девочке зачеркнули 9*2 и написали правильный ответ 2*9, а закончили тем, что

произвольный модуль над коммутативным кольцом с единицей алгебру многочленов не даст.

понятно, конечно, что мы можем построить соответствующую свободную А-алгебру по-разному, важно что у нас есть три разные вещи: запись элемента алгебры, запись умножения 2-х элементов алгебры, дающая этот элемент, и действие кольца на элемент алгебры, дающее этот элемент. это три в сущности разные вещи, но они отождествляются.

1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.04.2013, 23:16

Подскажите, пожалуйста, что значит эта строчка?
Подскажите, пожалуйста, что значит эта строчка? Tick1 += () => { };

Подскажите, пожалуйста, что означает эта строка в ассемблере: 00b00DE0 add byte ptr [eax], al, как её прочитать?
Что означает 00b00DE0, 00b00DE2, 00b00DE4 и т.д.?

Что означает эта строка ?
Добрый день, столкнулся с java кодом, нужно его перевести на c# , но не до конца понимаю значение строки : static { code =...

Что означает эта строка: return '\0'?
return '\0';

Что означает эта строка в программе : until not(n in ['1'.'4']);
Program funktion5; uses crt; Var x,y,z:real; n:char; Begin clrscr; repeat clrscr; writeln...


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

Или воспользуйтесь поиском по форуму:
36
Ответ Создать тему
Новые блоги и статьи
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы ## О чём эта статья В процессе построения ОДУ-модели (система дифференциальных. . .
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет) Содержание проекта Симуляция вековой (50 лет) экологической сукцессии в почве леса Основные участники: АМ-гриб, ЭКМ-гриб,. . .
сукцессия 23. Более физиологичная физиология, более экологичная экология, более диффурные диффуры.
anaschu 12.07.2026
Что реально нашли и починили за эти 5 часов Правило Линдемана (КПД конверсии сахара в тело, kEff) — раньше 100% полученного углерода шло прямо в биомассу гриба; теперь только kEff=0. 5 (после. . .
сукцессия 22. От артефактов к физиологии: калибровка агентной модели грибной сукцессии для воспроизведения сезонной динамики и pH-плато
anaschu 11.07.2026
Аннотация В данной работе представлена калибровка агентной модели динамики грибных сообществ (fungal-succession), направленная на устранение нефизичных артефактов (коллапс биомассы, мгновенное. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru