Задать вопрос
Ещё учусь, занимаюсь разработкой на платформе .NET, язык C#, обучаюсь вебу, хочу стать программистом.

Наибольший вклад в теги

Все теги (12)

Лучшие ответы пользователя

Все ответы (16)
  • Почему в Python можно не описывать поля классов, а в C# обязательно?

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

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

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

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

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

    Разделяемые методы особенно полезны для настройки автоматически созданного кода. Они позволяют зарезервировать имя и сигнатуру метода, чтобы автоматически созданный код мог вызвать метод, а разработчик мог сам решить, реализовывать этот метод или нет. Как и разделяемые классы, разделяемые методы позволяют организовать совместную работу автоматически созданного кода и кода, созданного человеком, без дополнительных затрат во время выполнения.
    Источник: https://docs.microsoft.com/ru-ru/dotnet/csharp/pro...
    Ответ написан
    Комментировать
  • 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# разработчик
    Роберт Мартин писал в книге "Чистая архитектура" следующее: "Строго говоря, бизнес-правила - это правила или процедуры, делающие или экономящие деньги. Еще строже говоря, бизнес-правила - это правила, делающие или экономящие деньги независимо от наличия или отсутствия их реализации на компьютере. Они делают или экономят деньги, даже когда выполняются вручную.

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

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

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

Лучшие вопросы пользователя

Все вопросы (13)