| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > .NET для новичков > Прошу задать пару вопросов |
| Автор: DenWPF 19.4.2011, 13:19 |
| Задайте 10 вопросов мне, мне это нужно для мотивации, что я не чего не знаю) |
| Автор: Artemon 19.4.2011, 13:28 |
| Вопрос номер 1: Чем отличается интерфейс от абстрактного класса ? |
| Автор: DenWPF 19.4.2011, 13:39 | ||
По сути интерфейс, это просто описание методов, которые должны быть описаны в наследнике. В интерфейсах нельзя объявлять поля, модификаторы доступа не нужны и тоже запрещены. Абстрактный класс нельзя создать, класс является абстрактным пока в нем есть хотя бы один абстрактный метод. Абстрактные методы можно переопределять, в наследниках. Что то скупо я... |
| Автор: Экскалупатор 19.4.2011, 14:00 |
| DenWPF, что то ты как то вокруг да около... чем отличается структура от класса? |
| Автор: DenWPF 19.4.2011, 14:14 | ||
Структура это значимый тип, класс ссылочный. структура и классы, могут в себе содержать, поля, методы, события ... При передаче структуры, делается её копия и на исходный объект не влияет новый созданный объект, так это два разных объекта. В класс все наоборот, два элемента являеются просто разными именами на одну и туже область в памяти. Структура храниться в стеке, класс в куче. Классы предназначены для более сложного моделирования, чем структура, структуру нужно использовать для объектов, которые после создания не требуют в извинении. Структурами являются элементарные типы. з.ы Опять я что то слабенько =(( |
| Автор: v00d00 19.4.2011, 14:57 |
| Не рак ли ты по знаку зодиака? |
| Автор: DenWPF 19.4.2011, 15:00 | ||
нет. Если ты пытался меня как то подъе... подколоть... то не вижу смысла. или ты хочешь сказать что я не правильно отвечаю на поставленные вопросы т.е отвечаю не на вопрос конкретно? |
| Автор: Экскалупатор 19.4.2011, 15:00 |
| простенький вопрос. сколько "весит" ссылка на экземпляр класса?(в памяти) а сколько на структуру? |
| Автор: DenWPF 19.4.2011, 15:09 | ||
Этот вопрос я знаю, что не знаю. Держал в уме, что нужно узнать. Но вообще значимые типы весят столько сколько их тип требует. А ссылка весит вроде 4 байт. |
| Автор: DenWPF 19.4.2011, 15:51 | ||
аххх сложно...где можно про это все почитать? |
| Автор: Экскалупатор 19.4.2011, 15:57 |
да в общем все у того же Рихтера. там где описывается стек, управляемая куча, что происходит когда передается управление в метод и пр. |
| Автор: DenWPF 19.4.2011, 16:05 | ||
значит не дочитал до туда. Спасибо, следующее вопросы. p.s Вот именно такие простые вопросы мне и нужны.. |
| Автор: Экскалупатор 19.4.2011, 16:10 |
| домен приложения. |
| Автор: DenWPF 19.4.2011, 16:29 | ||
домены приложений используются для изоляции одного приложения от другого. Это делается для обеспечения безопасности, что бы одна программа не нарушила работу другой, к примеру, удалением одной программы данных другой. CLR по умолчанию создает отдельный домен для новой программы, но и программист может этим управлять. Может создать новый домен, и исполнять там код, который является не безопасным, или просто для разделения программы. p.s ну ты каждый раз в точку =) нету у меня сильных сторон=( |
| Автор: Экскалупатор 19.4.2011, 17:19 |
| ну давай совсем простое. как сделать член класса доступным только из класса в котором он объявлен и в классах его наследующих? как сделать класс доступный только в текущей сборке? Добавлено через 4 минуты и 59 секунд в догонку, как сделать что бы тип нельзя было наследовать. |
| Автор: DenWPF 19.4.2011, 18:44 | ||||||
protected
internal
Сделать его финальным, вроде sealied |
| Автор: nikitao 19.4.2011, 20:29 |
| Перечисли плюсы и минусы платформы .Net. Когда ее стоит выбрать для разработки , а когда стоит избежать ? |
| Автор: wester 19.4.2011, 20:57 |
| продолжу простые вопросы 1. Зачем нужен Reflection 2. инкапсуляция и скрытие. Чем отличаются ? 3. различие евента от делегата 4. Все классы в BCL наследуются от object. Какой в этом плюс ? |
| Автор: DenWPF 19.4.2011, 21:45 | ||||||||
Не чего он нём не знаю, не когда не чего не делал... Только помню что он имеет доступ к метаданным.
скрытие для меня не известный термин. Инкапсуляция один из важнейших принципов ООП. Заключается в том что в одном месте (класс, структура) находиться разные элементы, методы, поля события, которые связаны логическим смыслом и являются базой для создания объекта.
это очень два близких элемента, делегат является ссылкой на функцию, описывает её входные данные, и возможно вызвать функцию через делегат. Используется для передачи в как параметр в другую функцию. событие... не могу объяснить.
Мы можем любой класс привести к типу Object, значит мы можем создать массив объектов. и запихнуть их туда и не волноваться что он сами разного типа. + в Object описаны функции которые довольно часто используются и программист их точно не забудет. p.s wester, Спасибо, я всё больше понимаю что не чего не знаю =( жду ещё вопросов |
| Автор: Voyager 19.4.2011, 21:53 |
| Тоже подключусь. DenWPF, сколько времени ты тратишь на практику, а сколько на теорию? |
| Автор: DenWPF 19.4.2011, 22:15 | ||
99% практики =( ошибку осознал. Сейчас почти только теория. А эти вопросы быстрей что бы действовали стимулом...стыдно блин.. |
| Автор: wester 19.4.2011, 22:57 |
| DenWPF, вопрос про object был больше с подковыркой - просто программистам .net Framework так захотелось. и только. Хотя скорее всего это корни ООП. В Qt Классы тоже наследуются QObject про делегаты. event просто член класса, не больше не меньше. ладно, сейчас что нибудь полегче придумаю 1.вопрос про потоки - почему не рекомендуется использоваться такие средства управления потоками как Thread.Start() Thread.Join() 2. В каких случаях Parallel.For может не обеспечивать распараллевание цикла ? |
| Автор: DenWPF 19.4.2011, 23:17 | ||||||
Thread.Start() - имеется ввиду объект.Start() ? если имеется ввиду статический метод класса Thread не сталкивался с таким вообще. Но предпологаю, что это для главного потока. И пре останавливать главный поток не есть хорошо.
реакция после прочтения :чо? Добавлено через 3 минуты и 19 секунд
По большей части только проблемность кросплатформености .net она есть, но с ней очень сложно совладать. технология .net развивается быстро и часто и имеет много новых технологий в себе. единственная причина по которой я выбираю .net она более проста в использовании, и имеет большую базу литературы и мануалов. |
| Автор: A5uKa 19.4.2011, 23:21 |
| как сделать константный массив (коллекцию) |
| Автор: DenWPF 19.4.2011, 23:22 | ||
инициализировать при объявлении. |
| Автор: wester 19.4.2011, 23:37 | ||
| DenWPF, тогда читай про TPL про массив - неправильно!
прекрасно компилируемый код! |
| Автор: DenWPF 19.4.2011, 23:53 |
| wester, та ладно...и с каких пор константу можно изменять? |
| Автор: wester 20.4.2011, 00:07 |
| wester, а с каких пор инициализированный массив считается неизменяемым ? я дал фрагмент кода - скомпилируй, посмотри. В целом вопрос конечно интересный, как объявить константный массив |
| Автор: Экскалупатор 20.4.2011, 00:35 |
| wester, он всю жизь считается неизменяемым. я думаю надо смотреть в корень. что есть массив? это какая то область данных. когда мы объявляем массив, мы получаем адрес этой области данных. дальше нужно исходить из требований, что именно нам нужно, что бы не изменялись данные в массиве или что бы не изменялся сам адрес массива. думаю если сделать массив констант, то данные менять будет нельзя(не уверен что получиться никогда не делал). еще думаю достаточно будет обернуть массив в класс, который будет этим массивом управлять и будет возвращать данные из массива без доступа к самому массиву, то в этой ситуации тоже можно контролировать изменение массива... но это все мои домыслы. если честно ни разу не приходилось иметь дело с константными массивами... p.s. я надеюсь тут имелось ввиду не тот факт что массив он сам по себе константен, т.е. его содержимое менять можно, а вот его размер и тип нельзя. |
| Автор: A5uKa 20.4.2011, 07:33 | ||||
Нельзя (невозможно) создать константый массив, только вот эту коллекцию ( синтаксис Nemerle, в C# примерное так же )
|
| Автор: DenWPF 20.4.2011, 08:04 |
| A5uKa, то что сказал Экскалупатор... да, туплю по полной. и просто массиву const прописать наверное нельзя, этоже не элементарный тип. |
| Автор: -Mikle- 20.4.2011, 08:28 |
| Вы тут напутали с массивами и константами. Константа - это фиксированное значение. Константный массив, в вашем понимании - это массив констант. Сам массив остается массивом и никогда не будет константой (в любое время полю array можно задать новое значение). Следовательно значения элементов в нем, по-прежнему, можно изменять после инициализации (хоть на константы, хоть на не константы). Вообще константа это такая вещь, которая обрабатывается компилятором. В исполняемом коде, нет и не было понятия ссылка на константу или имя константы. Значения константы, при компиляции, подставляется во все те места, где она использовалась. Более того, компилятор умеет обрабатывать такие вещи как вычисление константных значений на этапе компиляции. Например, "ASD" + "DEF" скомпилируется сразу в "ASDDEF", это вообще самая элементарная вещь из всех, которые делает компилятор. Но надо знать, что при всем этом, объявление константы сохраняется в метаданных класса, а это значит, что ее можно получить через рефлекшн. Вот простой вопрос по теме: Чем отличается "static readonly" от "const"? |
| Автор: A5uKa 20.4.2011, 08:48 | ||
Дополню вопрос чем public static numToLetter = System.Array.AsReadOnly( array[ 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H' ] ) отличается от public static readonly numToLetter = array[ 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H' ] |
| Автор: Fitc 20.4.2011, 12:32 | ||
Знаю, что поле/свойство readonly можно инициализировать в конструкторе (классе) и значение можно менять через reflection (при желании), что нельзя сделать с константой. Еще (если не путаю) const хранится в стеке приложения,а readonly в куче |
| Автор: DenWPF 20.4.2011, 14:46 |
| Fitc, эй наглец тут вопросы задают мне. отвечать на них можно уже после того как облажался... |
| Автор: Fitc 20.4.2011, 14:58 |
| Сорри |
| Автор: nikitao 20.4.2011, 16:30 | ||
| 1)В чем отличие string от System.String int от System.Int32 и т д 2) Что такое пространства имен и зачем они нужны ? 3) Раскрой смысл акронимов : CIL CLR DLR WPF MSIL WCF WWF LINQ CLS CTS FCL BCL IL GC GAC XAML XML SOAP 4) Что такое inline инициализация и когда ее не стоит использовать ? 5) Что такое дженерики , для чего они нужны и как они работают ? 6) В чем отличие типа от класса ? 7) Можно ли в .net разместить массив в стеке ? 8) Какие циклы есть в C# ? В чем их различия ? Какой из них "лишний" 9) Что делает ключевое слов yield 10) Что появится на экране ?
Добавлено @ 16:31 11 в догонку : Ключевые слова ref in out params ? |
| Автор: DenWPF 21.4.2011, 11:18 | ||||||||||||||||||||||
не чем
пространства имен предназначены для логического разделения классов.
CIL - Промежуточный язык, асемблер машиного кода, создается для CLR. CLR - исполняющая среда языка CIL. DLR - не знаю. MSIL - не знаю отличия от CIL. WWF - не знаю. LINQ - язык запросов. расширяет возможности языка, и в большинстве случаи упрощает жизнь программиста. CLS и CTS - вроде это спецификации, т.е чему должны придерживаться языки. FCL - Framework class library BCL - базовая библиотека. IL - одно и тоже CIL GC - сборщик мусора ?! GAC - не знаю. XML - язык разметки XAML - основан на XML используется для технологии WPF. SOAP - протокол доступа, тоже основан на XML
В одной строке задаются несколько параметров. new Classs(){name = "ddd", age = 21} Когда не стоит использовать не знаю.
дженерики - не знаю что такое.
Не в чем.
не знаю
Лишний foreach ?
1 1 2 2 3 3 3
ref out - одно и тоже только отличия ref должен быть инициализирован перед передачей в функцию. params - передача не ограниченного количества параметров in - используется в foreach механизма не знаю =( ВСЕ СПАСИБО ЗА ВОПРОСЫ, пока что не буду отвечать на новые, как видите учить мне ещё много. |