Оффтопик. Изучаем C#

Автор Тема: Оффтопик. Изучаем C#  (Прочитано 244218 раз)

0 Пользователей и 6 Гостей просматривают эту тему.

Оффлайн Мурена

  • ADN OPEN
  • **
  • Сообщений: 53
  • Карма: 0
Re: Оффтопик. Изучаем C#
« Ответ #120 : 19-12-2017, 15:18:32 »
Здравствуйте!
Пытаюсь перейти на C# после VBA, не понятен такой момент:  в VBA можно было писать много модулей, взаимодействующих между собой, в результате компиляции получался один dvb файл. А на C# каждый файл .cs компилируется в свою сборку? Если я хочу разнести программу на логические части, как правильно сделать: делать многофайловую сборку из нескольких .cs файлов или есть какой то ещё вариант?

Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Re: Оффтопик. Изучаем C#
« Ответ #121 : 19-12-2017, 15:22:06 »
Здравствуйте!
Пытаюсь перейти на C# после VBA, не понятен такой момент:  в VBA можно было писать много модулей, взаимодействующих между собой, в результате компиляции получался один dvb файл. А на C# каждый файл .cs компилируется в свою сборку? Если я хочу разнести программу на логические части, как правильно сделать: делать многофайловую сборку из нескольких .cs файлов или есть какой то ещё вариант?
Что-то страшное вы рассказываете)
Если вы используете Visual Studio, то просто создаете проект, в свойствах которого ставите "библиотека классов", добавляете столько cs файлов, сколько вам нужно и компилируете - на выходе получите одну dll

Оффлайн Мурена

  • ADN OPEN
  • **
  • Сообщений: 53
  • Карма: 0
Re: Оффтопик. Изучаем C#
« Ответ #122 : 19-12-2017, 15:26:30 »
проект, в свойствах которого ставите "библиотека классов"
А если стоит "консоль", тогда каждый добавленный .cs файл в свою сборку компилируется?

Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Re: Оффтопик. Изучаем C#
« Ответ #123 : 19-12-2017, 15:27:07 »
проект, в свойствах которого ставите "библиотека классов"
А если стоит "консоль", тогда каждый добавленный .cs файл в свою сборку компилируется?
Нет. Проект всегда компилируется во что-то одно

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Оффтопик. Изучаем C#
« Ответ #124 : 19-12-2017, 15:29:44 »
А на C# каждый файл .cs компилируется в свою сборку?
Расскажите как это Вам удалось.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Мурена

  • ADN OPEN
  • **
  • Сообщений: 53
  • Карма: 0
Re: Оффтопик. Изучаем C#
« Ответ #125 : 19-12-2017, 15:32:09 »
Проект всегда компилируется во что-то одно
У меня есть классы объявленные в файлах без модификатора доступа , вроде они по умолчанию должны быть internal, и студия по началу вроде не ругается и ничего не подчёркивает, а компилировать не хочет, только с public'ом получается. Вот я и подумала, что может студия видит файлы как разные сборки...

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Оффтопик. Изучаем C#
« Ответ #126 : 19-12-2017, 15:32:29 »
А если стоит "консоль", тогда каждый добавленный .cs файл в свою сборку компилируется?
Не рекомендую использовать консоль. У него есть своя специфика, которая может привести к проблемам с AutoCAD .NET API.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Мурена

  • ADN OPEN
  • **
  • Сообщений: 53
  • Карма: 0
Re: Оффтопик. Изучаем C#
« Ответ #127 : 19-12-2017, 15:33:10 »
Расскажите как это Вам удалось
Я может что-то не то сказала, только начинаю знакомиться с С#

Оффлайн Мурена

  • ADN OPEN
  • **
  • Сообщений: 53
  • Карма: 0
Re: Оффтопик. Изучаем C#
« Ответ #128 : 19-12-2017, 15:33:59 »
Не рекомендую использовать консоль
Использую в целях "быстрого старта" так сказать. Потом, конечно, сделаю по нормальному в виде приложения

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13882
  • Карма: 1787
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Оффтопик. Изучаем C#
« Ответ #129 : 19-12-2017, 15:35:08 »
вроде они по умолчанию должны быть internal
Не internal, а private - поэтому из других классов и не видны.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Мурена

  • ADN OPEN
  • **
  • Сообщений: 53
  • Карма: 0
Re: Оффтопик. Изучаем C#
« Ответ #130 : 21-12-2017, 08:08:26 »
Здравствуйте! Подскажите, пожалуйста, в операторе Swith Case нельзя применять в качестве селектора переменные выражения целого типа (значение заранее неизвестно)?

Оффлайн trir

  • ADN Club
  • ****
  • Сообщений: 475
  • Карма: 63
Re: Оффтопик. Изучаем C#
« Ответ #131 : 21-12-2017, 10:33:27 »
низя
Цитировать
switch ( expression ) 
   case constant-expression : statement 
   [default  : statement]
как то вы сильно замудрили...

вместо Swith Case можно использовать словарь (Dictionary<int, Delegate>) - Python-Style!

Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Re: Оффтопик. Изучаем C#
« Ответ #132 : 21-12-2017, 11:06:28 »
вместо Swith Case можно использовать словарь (Dictionary<int, Delegate>) - Python-Style!
А чем if() не устраивает?

Оффлайн trir

  • ADN Club
  • ****
  • Сообщений: 475
  • Карма: 63
Re: Оффтопик. Изучаем C#
« Ответ #133 : 21-12-2017, 11:13:36 »
Цитировать
А чем if() не устраивает?
не хочится длиную портянку использовать

Оффлайн Мурена

  • ADN OPEN
  • **
  • Сообщений: 53
  • Карма: 0
Re: Оффтопик. Изучаем C#
« Ответ #134 : 21-12-2017, 11:16:33 »
вместо Swith Case можно использовать словарь (Dictionary<int, Delegate>)
Мне вот только не понятно, как...
У меня в общем цикл, количество итераций count зависит от ввода пользователя. В теле для каждого элемента выполняется стандартный алгоритм один и тот же, только для первого и последнего элемента (он же count) есть дополнительные действия. Если использовать If, то часть кода (стандартный алгоритм) придётся повторно писать, чего не хотелось бы. В VBA такой проблемы не было
В принципе, в ветке default, можно попробовать один if дописать