@Vladlen234
Wpf и asp .Net Core - топ

Что не так в коде?

события при нажатии
5f8470a79a818245108619.png
должно выдать информацию о машине.
В классе парковки содержаться свойства о паркове и машине
5f8470f10a85c512455904.png
А в методе
5f847170a74c3540726594.png
Идёт поиск и возвращается информация о машине и выводится там где красные стрелки стоят
5f84729837a0e481486674.png

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace WpfПриложение
{
    /// <summary>
    /// Логика взаимодействия для MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            
        }
      

       

        private void Поиск_Click(object sender, RoutedEventArgs e)
        {
             Parcing parcing = new Parcing(dataMark.Text , datanamber.Text);
            parcing.processing(DataPerson.Text, DataProperte.Text, DataPlaes.Text);
           

        }

        private void длбавить_Click(object sender, RoutedEventArgs e)
        {

        }
    }

    class Parcing
    {

        public string mark { get; set; } 
        public string namber { get; set; } 

        public int[] Mfloor { get; set; } = { 8, 3, 7, 4 };
        public int[] Mrow { get; set; } = { 18, 23, 78, 34 };
        public int[] Mplaes { get; set; } = { 148, 243, 748, 34 };
        public string[] Mname { get; set; } = { "Миша", "Катя", "Дима", "Марк" };
        public int[] Mage { get; set; } = { 18, 23, 78, 34 };
        public string[] Mmark { get; set; } = { "Лада", "Мерс", "Рено", "Несан" };
        public string[] Mnamber { get; set; } = { "73AB342E" , "73CB845E", "73ВB777В", "73МК456С" };

        public Parcing(string Pmark , string Pnumber)
        {
            mark = Pmark;
            namber = Pnumber;
            
        }


        public async void processing(string DataPerson , string DataProperte , string Dataplase)
        {
            int i = Mnamber.Length;
            int v = Mmark.Length;
            await Task.Run(() =>
            {
                foreach (string ProcNumer in Mnamber)
                {
                    if (ProcNumer == namber)
                    {
                        foreach (string ProcMurk in Mmark)
                        {
                            if (ProcMurk == mark)
                            {
                                Dataplase = $"Этаж {Mfloor[2]} ряд {Mrow[1]} место {Mplaes[2]} ";
                                DataProperte = $"номер {Mnamber[1]} марка {Mmark[2]} ";
                                DataPerson = $"возраст {Mage[0]} имя {Mname[1]} ";
                            }
                            else if (ProcMurk != mark)
                            {
                                v--;
                            }
                            if (v <= 0)
                            {
                                DataProperte = $"Данный машины не найденно на парковке";
                                Dataplase = $"Повтарите попытку ";
                            }
                        }
                    }
                    else if (ProcNumer != namber)
                    {
                        i--;
                    }
                    if (i <= 0)
                    {
                        DataProperte = $"Данный машины не найденно на парковке";
                        Dataplase = $"Повтарите попытку ";
                    }
                }
            });
        }

    }


    

  

}
  • Вопрос задан
  • 176 просмотров
Решения вопроса 1
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
Шарп конечно позволяет уникод, но у меня глаза вытекли. Что он делать то должен?
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Casper-SC
@Casper-SC
Программист (.NET)
1. Стиль именования какой-то странный и смешанный. Можно глянуть здесь, как нужно оформлять код (не навязываю, но это именно тот стиль, в котором написан .NET Core и прочий дотнет):
Как можно проверить,что цифры числа расположены в возрастающем порядке или в убывающем?
Как осуществить переход между страницами в Windows Presentation Foundation? (только закомментированный оставлять не нужно, здесь для примера)
Как сделать считывание с input и вывод в output на C#?
Не используй русские символы, транслит, и префиксы. Не оставляй гигантские пробелы между методами.

2. async void processing. Здесь нужно возвращать Task и он должен ожидаться в месте вызова, даже если на этом заканчивается работа метода. Если этот код вызывается по клику, то что будет если кликнуть 2 или 10 раз?

3. Метод processing не меняет значения текстовых полей, в коде идёт присвоение значений параметрам, но эти значения не попадут в текстовые поля в окне.

4. Магические переменные i и v. Нужно давать понятные названия.

int i = CarNumber.Length; // Я уже переименовал и свойства
int v = CarMark.Length;


5. Здесь вообще Task не нужен на такой задаче, если это примерно то кол-во данных, которое будет обрабатываться.

6. Если бы даже код был написан так, что значения бы присваивались текстовым полям в окне, то приложение бы крашилось из-за обращения к UI элементам из не UI потока.

7. Впечатление, что автор кода думает, что может быть ошибка в коде и переменная станет меньше нуля. Зачем здесь <=, если должно быть ==?
if (i <= 0)
{
    dataProperty = $"Данной машины не найдено на парковке";
    dataPlace = $"Повторите попытку";
}


8. Здесь не нужен знак $.
$"Данной машины не найдено на парковке";

9. В принципе класс-парсер построен неправильно.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы