Ответы пользователя по тегу C#
  • Зачем нужны частичные методы, если можно сделать так(см. ниже)?

    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()
            {
    
            }
        }


    Может вам просто убрать это ограничение, или оно нужно?
    Ответ написан
  • Как правильно работать с api shodan'a?

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

    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 комментарий
  • Как настроить фильтр, чтобы он выводил все символы которые находятся в кавычках?

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