Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.02.2015, 23:10   #1
hoz
Форумчанин
 
Аватар для hoz
 
Регистрация: 29.06.2013
Сообщений: 132
По умолчанию О вложенных типах подробнее

В учебнике попался такой пример:
Код:
public class OuterClass
{
 // Открытый вложенный тип может использоваться повсюду.
 public class PublicInnerClass { }

 // Закрытый вложенный тип может использоваться только членами включающего класса.
 private class PrivateInnerClass { };
}
Я так понимаю это ошибка? Ведь после поля public class PublicInnerClass { } должна быть "точка с запятой". Разве не так?

Последний раз редактировалось Stilet; 02.02.2015 в 07:52.
hoz вне форума Ответить с цитированием
Старый 01.02.2015, 23:17   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

А это ошибка?
Код:
int x = 1;;
;;;;;;;;;;;;;;;;;;;;;
;
Просто не нужна она там, игнорируется. А поставить можно.

В С/С++ обязательна потому что там можно так:
Код:
class Something
{
} obj;
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 01.02.2015, 23:43   #3
hoz
Форумчанин
 
Аватар для hoz
 
Регистрация: 29.06.2013
Сообщений: 132
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
А это ошибка?
Код:
int x = 1;;
;;;;;;;;;;;;;;;;;;;;;
;
Тут как-то иначе.Объявляется тип. Ведь класс, это по сути тип. А между объявлениями типов обычно ставятся ;
Например:
Код:
int x;
int s;
string name;
Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Просто не нужна она там, игнорируется. А поставить можно.
Как это не нужна. В связи с чем? Я подобного синтаксиса не встречал. Хотя читаю Троелсена с самого начала. Авто не особо подходящий для изучения?

Далее идёт тоже интересный момент:
Код:
static void Main(string[] args)
{
 // Создавать и использовать открытый вложенный класс. Правильно!
 OuterClass.publicInnerClass inner;
 inner = new OuterClass.PublicInnetClass();
}
Тут же изначально как-то не так. Вначале объявляется переменная вложенного типа? А потом выделяется ей место, верно?
Т.е. это более расширенная запись такого варианта?
Код:
OuterClass.publicInnerClass inner = new OuterClass.PublicInnetClass();

Последний раз редактировалось Stilet; 02.02.2015 в 07:52.
hoz вне форума Ответить с цитированием
Старый 02.02.2015, 00:00   #4
lomastr_
Форумчанин
 
Регистрация: 16.01.2015
Сообщений: 672
По умолчанию

это не расширенная не урезанная а просто обыкновенная
lomastr_ вне форума Ответить с цитированием
Старый 02.02.2015, 00:02   #5
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

int x это объявление переменной, а не самого типа int

Странный у вас Троелсен, я вот открыл 5 издание 2010 года "Pro C# ..." (англ.), не нашел там ; после описаний классов. И в главе про эти PrivateInnerClass'ы тоже.
Да и вообще не видел такого нигде, просто нет смысла так писать.

А чего с "интересным моментом" непонятного? Да, это одно и то же. Это примерно как указатели в С/С++/Паскале/...
Ну и классы тут не причем.
Код:
int x;
x = 1;
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 02.02.2015 в 00:08.
Alex11223 вне форума Ответить с цитированием
Старый 02.02.2015, 00:09   #6
Luuzuk
Форумчанин
 
Аватар для Luuzuk
 
Регистрация: 18.01.2012
Сообщений: 975
По умолчанию

Цитата:
после поля public class PublicInnerClass { }
это не поле, а объявление нового класса.

Цитата:
Ведь класс, это по сути тип
Нет. Класс это класс, а тип это тип.

Цитата:
OuterClass.publicInnerClass inner;
inner = new OuterClass.PublicInnetClass();
Если это копипаст из учебника, а не ваша перепечатка руками, то выкиньте/удалите/сожгите эту книгу, и постарайтесь найти другое пособие. Такое количество косяков на единицу кода может вообще всякого понимания вас лишить )

Цитата:
Между первой и второй строчкой inner равно null
Alex11223, да ладно?
Благодарить в репутацию. Проклинать — туда же
Luuzuk вне форума Ответить с цитированием
Старый 02.02.2015, 00:11   #7
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Alex11223, да ладно?
Нет, я с полями перепутал.

Цитата:
Если это копипаст из учебника, а не ваша перепечатка руками, то выкиньте/удалите/сожгите эту книгу, и постарайтесь найти другое пособие. Такое количество косяков на единицу кода может вообще всякого понимания вас лишить )
Или другую версию его ) Например, английскую. Ибо опечатка в имени тут (но это думаю таки не копипаст) и ; это видимо косяк переводчика.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 02.02.2015 в 00:17.
Alex11223 вне форума Ответить с цитированием
Старый 02.02.2015, 00:39   #8
lomastr_
Форумчанин
 
Регистрация: 16.01.2015
Сообщений: 672
По умолчанию

Цитата:
Класс это класс, а тип это тип.
в чем разница?
lomastr_ вне форума Ответить с цитированием
Старый 02.02.2015, 00:44   #9
Luuzuk
Форумчанин
 
Аватар для Luuzuk
 
Регистрация: 18.01.2012
Сообщений: 975
По умолчанию

Типы
Классы

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

Сразу такой пример: "IResolver resolver" - объявление переменной ТИПА "IResolver", но "IResolver" не является классом, поскольку это интерфейс. Типы и классы - разные вещи, их не следует путать
Благодарить в репутацию. Проклинать — туда же

Последний раз редактировалось Luuzuk; 02.02.2015 в 00:47.
Luuzuk вне форума Ответить с цитированием
Старый 02.02.2015, 01:19   #10
lomastr_
Форумчанин
 
Регистрация: 16.01.2015
Сообщений: 672
По умолчанию

мужчина и человек
одно и тоже, просто первое частное определение второго (некая конкретизация) и не более
lomastr_ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
О типах данных Cstln Паскаль, Turbo Pascal, PascalABC.NET 2 28.05.2013 10:08
Типизация. Строки. Типы в типах. Человек_Борща Общие вопросы Delphi 4 04.10.2012 21:40
О типах данных kishtuki C# (си шарп) 4 28.02.2012 20:51
Проблема в типах artem611 Паскаль, Turbo Pascal, PascalABC.NET 2 11.04.2011 10:18
C# ошибка в типах Gohan Помощь студентам 1 20.02.2011 14:54