• Зачем нужны частичные методы, если можно сделать так(см. ниже)?

    AVollane
    @AVollane
    Начинающий C# разработчик
    Здравствуйте. Существует несколько ситуаций, когда желательно разделение определения класса или метода:

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

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

    Разделяемые методы позволяют разработчику одной части класса определить метод, схожий с событием. Разработчик другой части класса может решить, реализовывать этот метод или нет. Если метод не реализован, то компилятор удаляет сигнатуру метода и все вызовы этого метода. Вызовы метода, включая любые результаты, которые могли бы произойти от оценки аргументов в вызовах, не имеют эффекта во время выполнения. Таким образом, любой код в разделяемом классе может свободно использовать разделяемый метод, даже если реализация не предоставлена. Во время компиляции и выполнения программы не возникнут никакие ошибки, если метод будет вызван, но не реализован.

    Разделяемые методы особенно полезны для настройки автоматически созданного кода. Они позволяют зарезервировать имя и сигнатуру метода, чтобы автоматически созданный код мог вызвать метод, а разработчик мог сам решить, реализовывать этот метод или нет. Как и разделяемые классы, разделяемые методы позволяют организовать совместную работу автоматически созданного кода и кода, созданного человеком, без дополнительных затрат во время выполнения.
    Источник: https://docs.microsoft.com/ru-ru/dotnet/csharp/pro...
    Ответ написан
    Комментировать
  • Как правильно унаследоваться от обобщенного класса без ошибки компилятора?

    AVollane
    @AVollane
    Начинающий C# разработчик
    Здравствуйте.
    А вам точно необходимо, чтобы тип в объявлении универсального класса имел открытый конструктор без параметров? Если убрать , new(), то всё без ошибок:
    public class Model<TDataObject> where TDataObject : DataObject
        {
            public Model()
            {
    
            }
        }


    Может вам просто убрать это ограничение, или оно нужно?
    Ответ написан
  • Какой лёгкий редактор кода выбрать?

    AVollane
    @AVollane
    Начинающий C# разработчик
    Здравствуйте.

    У Notepad++ последний релиз был чуть больше недели назад, по этому он вполне жив.

    Ещё есть вариант использовать Atom (сам не пользовался, но многие хвалят). Atom сейчас активно развивается, к тому же он опенсорсный. Как у него с Total Commander не могу сказать, но, думаю, особо проблем не должно быть.

    Есть редактор Brackets от Adobe, но его поддержка скоро заканчивается.

    В этих редакторах есть и подсветка, и расширения. Можете посмотреть в их сторону.
    Ответ написан
  • Как правильно работать с api shodan'a?

    AVollane
    @AVollane
    Начинающий C# разработчик
    Здравствуйте.
    401 Unauthorized — для доступа к запрашиваемому ресурсу требуется аутентификация.
    Может быть помимо ключа для работы с API Shodan нужны ещё какие-то аутентификационные данные? Попробуйте проверить поле, которое содержит в себе условия аутентификации (WWW-Authenticate вроде), или прочитайте о них в документации.
    Ответ написан
    Комментировать
  • Как олимпиадная задача должна принимать и возвращать данные?

    AVollane
    @AVollane Автор вопроса
    Начинающий C# разработчик
    Вы были совершенно правы! Моя программа действительно просто была слишком долгой из-за рекурсивного алгоритма. Я использовал другой алгоритм и всё заработало. Если кому интересно, то вот код функции:
    int n_fibonacci_num(int n) {
        if (n <= 2) return 1;
        int x = 1;
        int y = 1;
        int ans = 0;
        for (int i = 2; i < n; i++)
        {
            ans = x + y;
            x = y;
            y = ans;
        }
        return ans;
    }
    Ответ написан
    Комментировать
  • Какие трудности могут возникнуть во время установки убунту на ноутбук HP?

    AVollane
    @AVollane
    Начинающий C# разработчик
    Здравствуйте. Обычно Ubuntu ставится на более или менее современные компьютеры и ноутбуки без проблем. Только важно правильно создать загрузочную флешку c правильной схемой разделов (MBR или GPT) и правильной архитектурой, иначе установка может не начаться. Единственное, как-то раз при установке Linux Manjaro на ноутбук Acer у меня BIOS запретил установку, из-за чего мне пришлось отключить безопасность BIOS, но это мелочи. Я думаю, всё должно пройти без происшествий.
    Ответ написан
  • Почему в Python можно не описывать поля классов, а в C# обязательно?

    AVollane
    @AVollane
    Начинающий C# разработчик
    Здравствуйте. Это всё из-за того, что Python является языком с динамической типизацией, а C# - язык со строгой типизацией, что помогает избежать дополнительных расходов на память. За счёт этого Python более простой, но C# безопаснее и быстрее. В общем, в C# всё должно быть определено заранее, без каких-либо сюрпризов.
    Ответ написан
    8 комментариев
  • WPF Каким образом можно передать данные из СоmboBox одного окна в Label другого окна?

    AVollane
    @AVollane
    Начинающий C# разработчик
    Здравствуйте. Думаю, простым и надёжным способом будет передача нужных данных через конструктор второго окна. Стандартно он создаётся без параметров, но мы можем дописать их туда. Написал код и снабдил его комментариями, думаю так будет проще разобраться.
    Код XAML главного окна (MainWindow):
    <Window x:Class="ComboBoxResultToAnotherWindow.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
            xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
            xmlns:local="clr-namespace:ComboBoxResultToAnotherWindow"
            mc:Ignorable="d"
            Title="MainWindow" Height="450" Width="800">
        <StackPanel>
            <ComboBox Name="cbPat" Margin="100" Height="30"/>
            <Button Name="openSecondWindowButton" Width="100" Height="40" Content="Second Window" Click="OpenSecondWindowButton_Click"/>
        </StackPanel>
    </Window>


    Код XAML второго окна (SecondWindow):
    <Window x:Class="ComboBoxResultToAnotherWindow.SecondWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
            xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
            xmlns:local="clr-namespace:ComboBoxResultToAnotherWindow"
            mc:Ignorable="d"
            Title="SecondWindow" Height="450" Width="800">
        <Grid>
            <Label Name="labelWindow2"></Label>
        </Grid>
    </Window>


    Код C# главного окна (MainWindow):
    // Основное окно
        public partial class MainWindow : Window
        {
            // Тестовый список элементов, здесь я взял строки, но вы можете взять другой источник данных
            // и другой тип данных. Можете изменить способ их получение, вобщем как сами посчитаете необходимым
            List<string> elements = new List<string>() { "first", "second", "third" };
    
            // Конструктор основного окна
            public MainWindow()
            {
                InitializeComponent();
    
                // Привязываем элементы к комбобоксу
                cbPat.ItemsSource = elements;
            }
    
            // Обработчик события нажатия на кнопку
            private void OpenSecondWindowButton_Click(object sender, RoutedEventArgs e)
            {
                // Создаём объект, представляющий второе окно с лэйблом, на котором будем отображать данные
                // В конструктор передаём выбранный в комбобоксе элемент (мы изменили конструктор второго окна,
                // соответствующим способом). Данные преобразованы к нужному типу.
                SecondWindow secondWindow = new SecondWindow((string)cbPat.SelectedItem);
    
                // Показываем окно
                secondWindow.Show();
            }
        }


    Код C# второго окна (SecondWindow):
    // Второе окно
        public partial class SecondWindow : Window
        {
            // Конструктор изменён соответсвенно для приём строки, или другого элемента,
            // необходимого вам
            public SecondWindow(string element)
            {
                InitializeComponent();
    
                // Устанавливаем содержимое лейбла элементов, полученным в качестве аргумента
                labelWindow2.Content = element;
            }
        }


    У меня всё получилось. Выбрал в комбобоксе нужный элемент, нажал на кнопку, открылось окно, а там на лейбле выбранный элемент.
    Ответ написан
    2 комментария
  • Почему Visual Studio не видит .NET Framework?

    AVollane
    @AVollane
    Начинающий C# разработчик
    Здравствуйте. А почему бы вам не перейти на новую версию Visual Studio? Думаю, там проблема должна исчезнуть.
    Ответ написан
    Комментировать
  • Что входит в бизнес логику?

    AVollane
    @AVollane
    Начинающий C# разработчик
    Роберт Мартин писал в книге "Чистая архитектура" следующее: "Строго говоря, бизнес-правила - это правила или процедуры, делающие или экономящие деньги. Еще строже говоря, бизнес-правила - это правила, делающие или экономящие деньги независимо от наличия или отсутствия их реализации на компьютере. Они делают или экономят деньги, даже когда выполняются вручную.

    Банк взимает N% за кредит - это бизнес-правило, которое приносит банку деньги. И неважно, имеется ли компьютерная программа, вычисляющая процент, или служащий вычисляет его на счетах."

    Почитайте выше упомянутую книгу, если ещё не читали.
    Ответ написан
    Комментировать
  • Не могу растянуть 4:3 после переустановки виндовс,что делать?

    AVollane
    @AVollane
    Начинающий C# разработчик
    Добрый вечер. Если установили Windows 10, то почему бы вам просто в параметрах экрана не выставить 1024 x 768.
    Параметры > Система > Дисплей > Разрешение экрана > 1024 x 768
    Ответ написан
  • Как убрать эту ошибку?

    AVollane
    @AVollane
    Начинающий C# разработчик
    Здравствуйте. Сейчас перечитал документацию по классу DataContext и не нашёл там свойства Database, которое вы видимо пытаетесь использовать. В документации указано, что на объекте класса DataContext можно вызвать метод ExecuteCommand, который выполняет команды SQL непосредственно к базе данных. Попробуйте использовать его. Напишите, получилось или нет.
    Ответ написан
  • Как вывести все строчки с определенным id в datagrid из MYSQL management studio в wpf приложении?

    AVollane
    @AVollane
    Начинающий C# разработчик
    Здравствуйте! Entity Framework используете? Если нет, то установите Nuget пакет, создайте контекст данных, укажите в файле конфигурации строку подключения. В классе где находится контекст, создаёте DataSet, а также модели, чтобы работать с данными из базы, как с объектами (как правильно всё это сделать можете найти в интернете, даже в официальной документации было). Далее можете при помощи LINQ в коде сделать необходимые выборки. Как я понимаю, у вас ID внешним ключом базы данных не является?
    Ответ написан
    Комментировать
  • Как я могу создать базу данных в визуальном конструкторе и работать с ней?

    AVollane
    @AVollane
    Начинающий C# разработчик
    Работа с базой данных доступна из Visual Studio при нажатии "вид" => "обозреватель объектов SQL сервер (если работаете с MSSQL Server). Там в узлах посмотрите. А вообще для работ с базами данных в визуальном конструкторе есть Microsoft SQL Server Management Studio или DataGrip от JetBrains.
    Ответ написан
    1 комментарий
  • Как открыть дизайнер в Visual studio 2019?

    AVollane
    @AVollane
    Начинающий C# разработчик
    Здравствуйте. Может быть по Form1.cs правой кнопкой мыши, потом нажать "Открыть в конструкторе"?
    Ответ написан
  • Как настроить фильтр, чтобы он выводил все символы которые находятся в кавычках?

    AVollane
    @AVollane
    Начинающий C# разработчик
    Здравствуйте! Может быть проще было бы при помощи LINQ исключить все варианты, где ковычек нет, а потом сформировать из этого коллекцию?
    Ответ написан