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

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

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

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

  • ADN OPEN
  • **
  • Сообщений: 53
  • Карма: 0
Re: Оффтопик. Изучаем C#
« Ответ #105 : 06-12-2017, 19:34:28 »
2. Глюк студии. Попробуйте её заново открыть
Помогло, Спасибо!

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

  • Administrator
  • *****
  • Сообщений: 13067
  • Карма: 1685
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Оффтопик. Изучаем C#
« Ответ #106 : 06-12-2017, 19:37:54 »
Помогло, Спасибо!
Такое бывает достаточно часто. То, что подчеркивается какие-то методы/переменные в редакторе VS - это еще не показатель ошибки. Вот если вы скомпилировали и появилась ошибка в компиляции - это уже точно ошибка и её следует найти и устранить.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • **
  • Сообщений: 53
  • Карма: 0
Re: Оффтопик. Изучаем C#
« Ответ #107 : 12-12-2017, 14:37:29 »
Здравствуйте, подскажите, пожалуйста, в С# есть аналог оператора with в VB?

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

  • ADN Club
  • *****
  • Сообщений: 1596
  • Карма: 350
  • Отец modplus.org
    • ModPlus
Re: Оффтопик. Изучаем C#
« Ответ #108 : 12-12-2017, 14:39:59 »
Здравствуйте, подскажите, пожалуйста, в С# есть аналог оператора with в VB?
Нет

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2462
  • Карма: 692
  • LISP/C#, AutoCAD/Civil 3D
  • Skype: zagor_dmtr
Re: Оффтопик. Изучаем C#
« Ответ #109 : 12-12-2017, 14:42:42 »
в С# есть аналог оператора with в VB?
Насколько я знаю, прямого аналога нет. Разве что, есть похожий механизм - упрощённый инициализатор объекта или коллекции. Доступен в C# версии 7: https://docs.microsoft.com/ru-ru/dotnet/csharp/programming-guide/classes-and-structs/object-and-collection-initializers. Но это только при создании объекта или коллекции.

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

  • ADN Club
  • *****
  • Сообщений: 1596
  • Карма: 350
  • Отец modplus.org
    • ModPlus
Re: Оффтопик. Изучаем C#
« Ответ #110 : 12-12-2017, 14:44:18 »
Мурена, а вообще - смотря для чего вам. Если инициализировать поля для экземпляра класса, то есть специальный инициализатор объектов. Типа того:
Код - C# [Выбрать]
  1. public class Bunny
  2. {
  3.     public string Name;
  4. }
  5.  
  6. var bunny = new Bunny { Name = "Bugs" };

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

  • ADN Club
  • *****
  • Сообщений: 1596
  • Карма: 350
  • Отец modplus.org
    • ModPlus
Re: Оффтопик. Изучаем C#
« Ответ #111 : 12-12-2017, 14:46:01 »
Доступен в C# версии 7
Джозеф Албахари говорит, что доступен с версии C# 3.0

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2462
  • Карма: 692
  • LISP/C#, AutoCAD/Civil 3D
  • Skype: zagor_dmtr
Re: Оффтопик. Изучаем C#
« Ответ #112 : 12-12-2017, 14:50:22 »
Да, уже исправился :)
Просто в студии 2017 появились настойчивые подсказки везде использовать именно такую инициализацию, вот я и подумал, что это новшество 7-й версии.
Настолько настойчивые, что мне даже приходится в настройках отключать такие предупреждения:


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

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

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

  • ADN Club
  • *****
  • Сообщений: 1596
  • Карма: 350
  • Отец modplus.org
    • ModPlus
Re: Оффтопик. Изучаем C#
« Ответ #114 : 12-12-2017, 15:20:50 »
смотря для чего вам
Для инициализации полей структуры, но через инициализатор , наверно, не подойдет, так как требуются проверки допустимости значений, введенных пользователем
Я не пользовался структурами, но немного погуглив понимаю - то что вы хотите - нереализуемо. Используйте класс

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2462
  • Карма: 692
  • LISP/C#, AutoCAD/Civil 3D
  • Skype: zagor_dmtr
Re: Оффтопик. Изучаем C#
« Ответ #115 : 12-12-2017, 15:25:40 »
Для инициализации полей структуры, но через инициализатор , наверно, не подойдет, так как требуются проверки допустимости значений, введенных пользователем
но немного погуглив понимаю
А я совершенно не понимаю: при чём тут проверка значений и инициализация полей структуры? Проверка значений может выполняться сразу после их ввода, ещё до каких-то инициализаций. Структура, также, может содержать метод проверки своих внутренних значений на корректность. Если Александр понял о чём Вы, то ему полагается орден Ванги 1-й степени :)

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

  • ADN Club
  • *****
  • Сообщений: 1596
  • Карма: 350
  • Отец modplus.org
    • ModPlus
Re: Оффтопик. Изучаем C#
« Ответ #116 : 12-12-2017, 15:32:19 »
Структура, также, может содержать метод проверки своих внутренних значений на корректность
Я сначала попробовал и у меня не получилось. Студия сразу заругалась)
Для структуры можно задать только конструктор с параметрами и при этом имена параметров должны полностью повторять имена полей в структуре. Проверку введенных данных можно сделать, но обязательно так, чтобы поле в любом случае получило значение
Код - C# [Выбрать]
  1. struct Book
  2. {
  3.     public string name;
  4.     public string author;
  5.     public int year;
  6.  
  7.     public Book(string name, string author, int year)
  8.     {
  9.         this.name = name;
  10.         this.author = author;
  11.         if (year < 3000)
  12.             this.year = year;
  13.         else this.year = 3000;
  14.     }
  15.  
  16.     public void Info()
  17.     {
  18.         Console.WriteLine($"Книга '{name}' (автор {author}) была издана в {year} году");
  19.     }
  20. }

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

  • ADN OPEN
  • **
  • Сообщений: 53
  • Карма: 0
Re: Оффтопик. Изучаем C#
« Ответ #117 : 12-12-2017, 15:36:51 »
Проверка значений может выполняться сразу после их ввода, ещё до каких-то инициализаций
Да, точно, я торможу. Спасибо.
Для структуры можно задать только конструктор с параметрами
Конструктор использовать не хочу именно потому, что туда надо передавать кучу параметров.

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2462
  • Карма: 692
  • LISP/C#, AutoCAD/Civil 3D
  • Skype: zagor_dmtr
Re: Оффтопик. Изучаем C#
« Ответ #118 : 12-12-2017, 15:40:23 »
Для структуры можно задать только конструктор с параметрами
Да, это так. Т.к. конструктор без параметров у неё всегда есть "по умолчанию".
и при этом имена параметров должны полностью повторять имена полей в структуре
А вот это не верно. В конструкторе должны задаваться значения всех полей, но это никак не связано с составом и именами параметров.

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

  • ADN Club
  • *****
  • Сообщений: 1596
  • Карма: 350
  • Отец modplus.org
    • ModPlus
Re: Оффтопик. Изучаем C#
« Ответ #119 : 12-12-2017, 15:44:56 »
А вот это не верно.
Да, наврал. Но у меня студия ругалась, когда я пробовал. И теперь не знаю на что... Ну в общем - хрен с ней) С вопросом разобрались