• Чем отличается Visual C# от C#?

    Роман: .NET 2.0, код:
    string username = "test";
    Console.WriteLine($"hello {username}");

    Будет работать в VS2015. В ранних версиях студия скажет, что синтаксис неверный, оно и понятно, язык ведь другой версии. MSBuild, если новый, сможет собрать. Компилятор csc для .NET 2.0 - нет, не сможет.

    Соответственно, пользователи старых версий Visual Studio не смогут работать с кодом проектов написанных на новом C# (в данном случае, 6.0), даже если проект написан под старые версии .NET Framework. Т.е. смогут, но проще код поправить, или студию обновить (обновление не всегда возможно).

    Версии .NET Framework тоже имеют различия.

    В итоге получается бардак и плохая переносимость. Не думаю, что это нормально :-) По крайней в плане возможность использования новых конструкций языка для старых версий .NET - это совсем ненормально, хотя и удобно, если забить на пользователей старых версий Visual Studio и пользователей альтернативных решений.

    Мне в проектах с открытым исходным кодом приходится делать лишние тесты, чтобы адаптировать код под ранние версии .NET и плюс учитывать версии языков. Вот еще народ начинает потихоньку требовать .NET Core - еще один маленький геморрой будет в нашем колхозе :-)
  • Чем отличается Visual C# от C#?

    Роман: это я про совместимость кода, версии C#, .NET и прочий зоопарк :-)
  • Чем отличается Visual C# от C#?

    Роман: есть, как минимум спецификации для разных версий языков. Видимо не успевают оформлять :-)

    Текст и структура спецификаций разный, как следствие возможна разная трактовка написанного (теми, кто будет реализовывать поддержу языка). Мельком глянул, ISO/IEC 23270:2006 выглядит более подробней, чем ECMA-334. Microsoft представляет самые свежие данные, но как-то все поверхностно.

    У Mono и других подобных проектов в самом начале были юридические ограничения со стороны Microsoft, хотя они касаются .NET в целом, а не языка. Это мешало развитию и усиливало отставание. Сейчас, да, возможно станет лучше, но прошлое уже не изменишь, если есть серьезные ответвления и их будут продолжать развивать, то со временем различия могут стать ощутимыми.

    Всякие фишки добавляемые в Visual Studio - это тоже серьезная проблема. Например из последнего, интерполированные строки ($"hello {username}") можно использовать в коде любой версии C#, но только в Visual Studio 2015, со всеми вытекающими последствиями. Не понимаю, зачем так делать. Хотя нет, понимаю, это хитрый способ пересадить всех на новые версии Visual Studio, а там глядишь и до Windows 10 недалеко :-)

    Все эти мелочи приводят к мелким различиям. Отсюда и язык Microsoft Visual C#, уже местами несовместимый с C#. Если так будет продолжаться, лет через десять разрыв увеличится и вопросы «Чем отличается Visual C# от C#?» или «С чего начать: Visual C# или C#?» будут вполне актуальны.
  • Как работать с классами в цикле?

    По идее, назначения новый экземпляр класса переменной, старый теряется и не может быть использован, если намеренно не сохранить на него ссылку.

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

    Набросал пример, где все работает правильно:
    ideone.com/0xLLPc
    Четыре итерации, четыре экземпляра класса, на выходе четыре значения: 0 1 2 3
  • Как составить регулярное выражение исходя из следующих условий?

    Валентин: можно любые символы использовать:

    \NNN - десятичный ASCII код (один байт: 0-255). Например: \032 - пробел, \255 - буква "я" в Windows-1251;
    \xNN - шестнадцатеричный ASCII код (один байт: 0-255 (00-FF)). Встречается чаще всего. Например: \x20 - пробел; \xFF - буква "я" в Windows-1251 ;
    \uNNNN - шестнадцатеричный код Unicode (два байта: 0-65535 (0000-FFFF)). Например: \u0020 - пробел, \u044F - буква "я", \u263A - сайлик и т.п.

    Можно использовать символ как есть, но с непечатаемыми, некоторыми спец.символами и символами unicode могут быть проблемы, поэтому надежней использовать коды символов.
  • Как составить регулярное выражение исходя из следующих условий?

    Валентин: x - указывает не то, что число шестнадцатеричное. В регулярном выражении можно десятичные использовать: \001, а в unicode с префиксом u: \u0001.

    В данном случае это ничего не означает, можно использовать любой символ (включая NUL (\x00)).

    Да, главный смысл исключить пересечение с вводимыми символами. Непечатаемый символ пользователь просто так ввести не сможет и вероятность возникновения с этим проблем равна практически нулю.
  • Почему выходит разное отображение сайта при перезагрузке страницы?

    Много файлов стилей. Если что-то не загрузится, то на выходе результат будет соответствующий.

    Например,
    a01b5a766978496bb925786219efeabc.png
    если не загрузился файл: https://cdnjs.cloudflare.com/ajax/libs/twitter-boo...

    Лучше стили собрать в один файл и размещать на своем сервере, в идеале с кешированием.
  • Почему при изменении цвета возникает ошибка компиляции?

    Возможно, кодировка или невидимые символы.
    Можно попробовать в обычном блокноте открыть и сохранить (или через буфер обмена прогнать (вырезать/вставить); хотя если вы цвет из буфера вставляете, то тогда проблема может быть в источнике кодов цветов).
  • Как правильно удалить часть строки?

    Похоже я кривой HTML в комментарии сделал и последняя часть обрезалась. Не буду повторно писать.

    Вот пример удаления последнего элемента:
    https://jsfiddle.net/alekseynemiro/adm4v91c/1/
  • Как правильно удалить часть строки?

    Сергей Беловенцев: если делать разбивку на массив и в строке будет только один элемент, то в результате останется тоже, что и было на входе.

    Если нужно брать только первый элемент, то просто делать разбивку на массив и выбирать его (индексация начинается с нуля):
    var str = 'odborka_vecher_01.jpg,%,podborka_vecher_37.jpg';
    var result = str.split(',')[0];
    alert(result);
    
    // это также будет работать, если в строке будет один элемент
    str = 'odborka_vecher_01.jpg';
    result = str.split(',')[0];
    alert(result);
    
    // или строка будет пустой
    str = '';
    result = str.split(',')[0];
    alert(result);

    https://jsfiddle.net/alekseynemiro/adm4v91c/

    Если нужно будет обрабатывать ситуацию, когда в строке только один элемент и его требуется удалить, то можно просто проверить размер массива, если размер равен единице (1), то считать, что элементов больше нет и возвращать пустую строку:
    // входящая строка
    var str = 'odborka_vecher_01.jpg';
    // результат по умолчанию - пустая строка
    var result = '';
    // если элементов больше одного
    if (str.split(',').length > 1)
    {
      // берем первый элемент
      result = str.split(',')[0];
    }
    // показываем результат
    alert(result);


    Если нужно реализовать удаление элементов с конца и на 100% известно, что все элементы в строке разделяются подстрокой ",%," (когда их больше одного), то проще использовать функции lastIndeOf и substr:
  • Как лучше переписать JS используя Best Practices?

    yanis_kondakov: при каждом keyup происходит переинициализация autocomplete, это само по себе вызывает опасения :-)

    Я смотрю, вы в autocomplete отдаете только то, что он должен выводить, по сути дублируя механизмы фильтрации данных autocomplete (он должен уметь это делать сам). Вы можете инициализировать autocomplete один раз при загрузке страницы и скормить ему все что есть в localStorage. Тогда обработчик $('#htApp input').keyup будет не нужен.
  • Как лучше переписать JS используя Best Practices?

    yanis_kondakov: пробелы :-)

    for ( var i = 0...
    if ( ~localStorage.key( i ).split("*")...

    и их отсутствие:

    $('#htApp input').autocomplete({...
    $('#htApp button').on('click',function() {...

    Кавычки разные:

    $('#htApp input')
    var currentTag = "";

    Еще один мелкий косяк в стилистике:

    if (e.keyCode != 13) 
        return;

    Без скобок плохо читабельно. Либо со скобками, либо в одну строку.

    Разбивка на массив:

    localStorage.key( i ).split("*")

    Делается больше одного раза. Лучше один раз сделать split в переменную и работать с ней. Будет на пару долей секунд работать быстрее :-)

    $('#htApp input').autocomplete({

    Не уверен, что это уместно в $('#htApp input').keyup.
    Проблем с этим нет? В плане переинициализации autocomplete при нажатии клавиш в текстовом поле.

    Комментариев, да, многовато :-) Такое количество комментариев обычно для обучения используется. В реальных условиях код так подробно не комментируется.

    В остальном, код как код.

    По объявлению переменных, возможно будет полезным: let-const.
  • .NET 2.x Системная информация - как улучшить код?

    foreach - не проблема. Проблема тут в первую очередь в форматировании, а точнее в его полном отсутствии :-)

    Понятно, что Visual Studio сама все отформатирует, но в вопросе с просьбой сделать код лучше, отсутствие форматирования - это как минимум странно.

    pcAntivirus.StartsWith("& ")

    Каким образом может быть иначе, если строчкой выше в переменную pcAntivirus добавляется подстрока "& "? И зачем далее удалять добавленный амперсанд? Зачем его вообще добавлять? ;-)

    pcGPU += pty.Value.ToString();

    Аналогично, нет смысла, можно сразу передавать в twf.WriteLine().

    Ко всему прочему, учитывая, что значение добавляется к переменной (+=), то это логическая ошибка. Если видеоадаптеров будет больше одного, то при следующей итерации в файл будут записываться информация обо всех предыдущих адаптерах.
  • Как правильно реализовать программную отправку почты (mail.ru, gmail.com и т.д.)?

    Самый простой вариант - игнорировать ошибки. Добавить перед отправкой следующую строчку:
    System.Net.ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };


    Но для безопасности, лучше повозиться с сертификатами. Примеры можно найти в Google.

    И UseDefaultCredentials = false может потребоваться.
  • Как Подключить .net mvc к MySQL сервер через connectionstrings?

    David Sedrakyan: возможно что-то с context.
    Если создать новый context прямо в методе, проблема останется?
  • Как Подключить .net mvc к MySQL сервер через connectionstrings?

    Internal Server Error - о многом говорит, тут прям в каждой букве решение проблемы скрыто :-)

    Есть более информативный текст ошибки? Покажите более информативный текст ошибки.

    <customErrors mode="Off" />

    в крайнем случае try { ... } catch { ... }
  • 500 internal server error bot framework?

    Ethernets: без HTTPS скорее всего ничего не выйдет и бесплатный хостинг не будет просто так заниматься этим геморром. Даже коммерческие постоянно косячат с HTTPS, пока не пнешь десять раз, нормально не настроят, да еще в процессе себе что-нибудь сломают. Тренируйтесь дома :-)

    Bot Framework Channel Emulator.

    И с ngrok можно поиграть. Для тестов должно хватить.