Ответы пользователя по тегу C#
  • C#. Как исправить ошибку 415 Unsupported Media Type?

    Nipheris
    @Nipheris Куратор тега C#
    А на кой вы ставите Content-Type в GET запросе? Этот заголовок ставит та сторона, которая отправляет тело - либо сервер, когда отправляет ответ с телом, либо клиент, когда отправляет запрос с телом (т.е. POST или PUT).

    Как уже отметил Олег Погребняк , вам нужен заголовок Accept.
    Ответ написан
  • Как отключить перемешивание вкладок?

    Nipheris
    @Nipheris Куратор тега C#
    Предлагаю решить другую задачу, не мучать TabControl и расположить табы слева а не сверху.
    Ответ написан
  • Как определить тип события в WPF MVVM?

    Nipheris
    @Nipheris Куратор тега C#
    Я ничего не понял что вы спросили и для чего текстбоксу команда на изменение содержимого.

    Есть действия в приложении, которые во вьюмодели удобно представлять командами, и для которых обычно используются контролы а-ля кнопка (активировали/нажали - запустили команду). Если действия, которые удобно во вьюмодели представлять свойствами, которые затем подвязываются к контролам (например, изменение содержимого текстбокса). Мне кажется вам нужно почитать дальше про биндинги. Ну или переформулировать вопрос, чтобы стало понятно.
    Ответ написан
    Комментировать
  • ООП в C# c точки зрения Алана Кея?

    Nipheris
    @Nipheris Куратор тега C#
    Я посмотрел основные принципы ООП с точки зрения Алана Кея и не могу понять, чего он хотел.

    Неудивительно. Изначально ООП было прежде всего идеей и не имело формального описания, такого как реляционная алгебра для РБД. То, что не имеет формального описания может быть по-разному трактовано и понято, или не понято вовсе.
    Да. Этого нет.

    Ошибаетесь. Есть аналог "сообщений" - это методы объектов. Вызов метода - это аналог посыла сообщения. Просто вы не привыкли рассматривать это с такой точки зрения. Например, в Objective C, в котором ООП смолтоковского стиля, так прямо и говорят. В языках с Simula-подобным ООП методы не называют сообщениями, т.к. в отличие от Smalltalk-стиля выбор кода для вызова (обработки метода/сообщения) выполняется компилятором, а не самим объектом.
    Каждый объект имеет независимую память, которая состоит из других объектов

    Пожалуй здесь речь идёт об инкапсуляции.
    Стоп. Разве это не то, что я написал в пункте 4?

    Нет. В пункте 4 вводится само понятие классификации - что среди неупорядоченного набора всевозможных объектов вы выделяете подмножества объектов, "похожих" друг на друга. Здесь ещё не идёт речи о том, будут ли у них общие методы или ещё что-то конкретно. Речь о самой идее выделения объектов во множества по каким-либо признакам. В пункте 5 уже делается заключение, что если уж мы выделили некоторое подмножество объектов, то грех этим не воспользоваться и не задать одно и то же поведение сразу для всего подмножества (грубовато описал, но как то так и есть).
    Если у меня есть класс Dog, описывающий собаку, то от какого мифического единого общего класса она должна наследоваться?

    System.Object. Да, вы уже от него унаследовались, прямо или через других предков. С точки зрения среды исполнения не всё чем вы оперируете, является объектом, например примитивные значения. Однако с точки зрения языка можно сказать что int "является объектом" т.к. значение int может быть приведено к типу object. От себя лично скажу, что целесообразность концепции "всё - объект" весьма сомнительна по ряду причин.
    Ответ написан
    1 комментарий
  • Какую небольшую БД стоит использовать в программе, чтобы познать азы?

    Nipheris
    @Nipheris Куратор тега C#
    Если нет необходимости в множественных коннектах к БД, то SQLite - самое простое решение.
    Ответ написан
    Комментировать
  • C# variadic templates?

    Nipheris
    @Nipheris Куратор тега C#
    Нет, прежде всего потому что дженерики в шарпе - это не шаблоны, и работают они не на уровне AST, как в плюсах.
    Ответ написан
    Комментировать
  • Как получить доступ к enum из другого класса?

    Nipheris
    @Nipheris Куратор тега C#
    Вместо searchWindow.searchType.employByRoom
    нужно Search.searchType.employByRoom

    И дайте уже всем нормальные имена.
    Ответ написан
    3 комментария
  • Как реализовать команды Microsoft SQL Server в C# windows forms?

    Nipheris
    @Nipheris Куратор тега C#
    У DataAdapter-а проставить SelectCommand в select * from Classes where Класс=5
    Ответ написан
    Комментировать
  • Как растянуть элемент canvas на всю оставшуюся ширину?

    Nipheris
    @Nipheris Куратор тега C#
    Превратите горизонтально-ориентированный StackPanel, т.е. тот, в котором у вас канвас, в DockPanel (тэг Orientation нужно будет убрать). Тогда ваш канвас, как последний из потомков, займёт всю оставшуюся доступную площадь (поведение по умолчанию). Плюс, это будет логично - ведь у вас управляющие контролы должны быть задоканы слева, поэтому логичнее использовать DockPanel.

    С Новым Годом!
    Ответ написан
    1 комментарий
  • Как заполнить таблицу(DataGrid)?

    Nipheris
    @Nipheris Куратор тега C#
    <DataGrid ...... AutoGenerateColumns="False">

    https://msdn.microsoft.com/ru-ru/library/system.wi...

    Ну и понятное дело у DataGridTextColumn нужно нормальные биндинги сделать.
    Ответ написан
    4 комментария
  • Миграция проекта с WindowsForms на .NET Core. Куда смотреть?

    Nipheris
    @Nipheris Куратор тега C#
    Это абзац. Вам нужно многое узнать, я вам скажу.

    Во-первых, реализовать "в браузере" - вы вообще понимаете что вам в принципе нужно будет делать и какие компоненты на чём писать? "frontend-разработка", "backend-разработка" вам говорит о чём-то?

    Вам надо смотреть в сторону понимания того, какую логику приложения следует выполнять на сервере (и вы сможете её писать под .Net Core), а какую - на клиенте (и тут .Net Core в общем-то не при чём).

    Ну и да, я надеюсь вы понимаете что .NET Core и ASP.NET Core - это не одно и то же, и "делать веб-приложение на .NET Core" - весьма расплывчатое утверждение. Что оно вообще для вас значит?
    Ответ написан
    2 комментария
  • Что ж, как начать кодить(на C#)?

    Nipheris
    @Nipheris Куратор тега C#
    Тот случай, когда не могу добавить что-либо к тому, что предлагал пару лет назад.

    Но как можно понять, это учит лишь правильно держать карандаш, когда я хочу уметь рисовать.

    Хорошо, что вы это понимаете.

    Знаю о существовании книг и прочего по паттернам, но как по мне до этого еще чутка рановато, и нужно набить руку.

    И это тоже хорошо, что понимаете. Сначала нужно столкнуться с проблемами, а потом искать решения в книгах - иначе это будет как для швеи книга по закаливанию стали.
    Ответ написан
    Комментировать
  • Ellipse и TextBlock, как правильно сделать ширину TextBlock'a с TextWrapping?

    Nipheris
    @Nipheris Куратор тега C#
    Поставьте в ColumnDefinition вместо Auto значение 1*.
    Также запретите листбоксу иметь горизонтальную прокрутку:
    <ListBox Name="Test" Grid.Column="1" ScrollViewer.HorizontalScrollBarVisibility="Disabled">
     ...
    Ответ написан
  • Использование итераторов foreach?

    Nipheris
    @Nipheris Куратор тега C#
    Не должно быть duck typing в строго типизированном языке.

    Это не duck typing, это структурная типизация. Проверки, как вы могли заметить, выполняются во время компиляции, а не выполнения - где ж тут duck typing? А то что наследоваться не обязательно от опр. интерфейса - так что ж тут плохого? Язык даёт синтаксический сахар в виде foreach, задача компилятора - сгенерить код, содержащий вызовы определённых методов с определённой сигнатурой, не более. Это задача именно что для структурной типизации, когда компилятору без разницы что у вас там за класс и какие у него интерфейсы, лишь бы можно было сгенерировать нужный код, и это правильно.
    В конце-концов шаблоны в C++ работают точно также. И for-range циклы в C++ работают похожим образом (требуют чтобы были реализованы нужные методы, или свободные функции, принимающие аргумент нужного типа). В C# советуют реализовывать интерфейс, т.к. это даёт дополнительные возможности: а) передавать объект туда, где ожидается этот интерфейс (т.к. C# всё таки в основном язык с номинативной типизацией); б) контролировать что вы не забыли ничего реализовать.

    Прочитал, но по факту, класс всё равно реализует IEnumerable, просто явно об этом не заявляет.

    Не соглашусь, довольно спорный момент. Номинативная типизация говорит, что если только явное заявление о том, что мы реализуем какой-то интерфейс, даёт нам отношение is-a между классом и интерфейсом. Если мы НЕ говорим, что реализуем IEnumerable, то мы его НЕ реализуем, даже если у нас там такие же методы.

    И да, разберитесь заодно в разнице между статической и строгой типизацией, если вы не оговорились в комментарии, а действительно не понимаете разницы.
    Ответ написан
  • Как создаются большие игры на c++ или c#?

    Nipheris
    @Nipheris Куратор тега C++
    1. Разработка крупных игровых проектов имеет как минимум те же особенности, что и разработка крупных приложений вообще. Раз вопрос о движках, не будем рассматривать прочие аспекты, такие как построение игровой модели, графический дизайн игры, написание сюжета и пр. Разработка движка, как большого проекта, требует:
    - умение поставить начальные технические условия, которые будут заложены в архитектуру проекта (чтобы потом не было очень больно это всё менять);
    - умение разбить движок на крупные подсистемы и выстроить между ними необходимые интерфейсы, чтобы каждую из подсистем отдать на разработку в отдельную команду;
    - умение получить MVP в разумные сроки и строить дальнейшую разработку итеративно.

    2. Как большой проект, связанный именно с компьютерной графикой, проект движка предполагает:
    - что немалая часть кода будет писаться с учётом архитектурных особенностей аппаратуры - например, если ваш движок будет пытаться передавать слишком много данных по шине на видеокарту (постоянно гонять геометрию/текстуры), то скорость шины быстро станет узким местом и никакое новейшее оборудование вам не поможет.
    - что графический код рано или поздно может потребовать мелких оптимизаций (вплоть до переписывания супернагруженных мест на ассемблере под каждую поддерживаемую аппаратную платформу);
    - что графический код сегодня требует серьезного понимая физики света и цветовосприятия.

    Для всех тех, кто понимает как реализовать вышеописанное, C++ и C# - лишь инструменты и жизненная необходимость, чтобы получить всё это, поэтому про знание языков даже говорить не буду, это подразумевается.
    Ответ написан
    Комментировать
  • Как несколько раз записать в List массив с одним и тем же именем но разными значениями?

    Nipheris
    @Nipheris Куратор тега C#
    Конечно у вас будет один и тот же массив, вы ведь его один раз создали снаружи цикла.

    В C# массив - ссылочный тип. Это значит что ваша переменная anyArr хранит в качестве значения ссылку (!) на массив. Если вы скопируете значение переменной, что вы по сути делаете в строке arrList.Add(anyArr); вы скопируете эту самую ссылку на массив, но не сам массив (в результате ссылка на один и тот же массив будет помещена в список 6 раз).

    Если хотите иметь 6 разных массивов - создавайте их в цикле, или копируйте исходный, смотря что вам нужно делать. В любом случае, вам нужно 6 разных объектов типа object[] .

    Затем читайте про типы-значения и типы-ссылки в C#.
    Ответ написан
    2 комментария
  • Дружба C# и Linux, как?

    Nipheris
    @Nipheris Куратор тега C#
    Гуглите .NET Core / Mono.
    Ответ написан
    Комментировать
  • Как организовать сложную бизнес-логику?

    Nipheris
    @Nipheris Куратор тега C#
    Такой подход называется реактивное программирование. и реализован в библиотеках Rx.NET и ReactiveUI. Бизнес-логику он вам проще не сделает, но организовать зависимости между тем какие значения как вычисляются - поможет (благодаря декларативному подходу к описанию зависимостей).
    Ответ написан
    Комментировать