Задать вопрос
  • Как можно исправить код для поиска квадратных уравнений?

    • Здесь совершенно не оправданны методы с параметрами out, которые ещё и зачем-то возвращают 0.
    • Пользователь не вводит данные идеально, нужно обрабатывать такие ситуации.
    • Методы именуются с большой буквы.
    • Поля классов, параметры методов, локальные для метода переменные именуются с маленькой буквы в стиле camelCase.
    • Всё нужно именовать по-английски, без бессмысленных сокращений, которые только ухудшают читабельность. Сейчас с онлайн переводчиками и минимальным знанием английского языка можно легко написать любое название метода. Нужно просто хоть немного знать английский, чтобы понимать, когда переводчик подсунул что-то не то. Хотя бы базовую грамматику.
  • Как в WPF сделать mvc модель?

    Гугли про DataTemplateSelector, ObservableCollection, ContentControl (и его свойства ContentTemplate и другие связанные с Template), MVVM
  • Как в WPF сделать mvc модель?

    В WPF используется обычно MVVM. Это для начала.
  • Как при добавлении элемента в ObservableCollection выявить и избежать копий?

    oleg_ods, если по уму делать, там одни словарём никак не обойдёшься. Если плюс ко всему нужно реализовать валидацию в DataGrid. А её реализовать надо, насколько я понимаю. Она нужна, когда есть возможность нажать на ячейку и введя текст добавить новое значение. Я сижу ради интереса делаю, там конца и края не видно. Хотел за пол часа - час набросать. Просто есть много кейсов, где можно накосячить (будут ошибки в будущем, при развитии проекта), если сделать всё на то самое слово.

    Но в целом всё верно, можно или в словарь класть или в хэшсет и проверять, если есть в словаре или хэшсэте, то добавлять в коллекцию нельзя.
  • Как при добавлении элемента в ObservableCollection выявить и избежать копий?

    jostario, чтобы понять, что тебе сказали, ты должен понимать несколько вещей: что существуют Observable коллекции. Что значит слово "коллекция". Что такое Dictionary и чем он отличается от List. ObservableCollection это тот же List, но с возможностью уведомить биндинг об изменении коллекции. Значит ObservableDictionary это тот же Dictionary, но Observable. Просто понимая эти вещи ты бы сам мог разобраться, что дальше делать и подходит ли тебе предложенный вариант.
  • Как при добавлении элемента в ObservableCollection выявить и избежать копий?

    На твой вопрос не существует единственно верного ответа. Ответ "зависит". Ты предоставил мало информации, на вопросы не отвечаешь. Судя по всему, помощь тебе не нужна.
  • Как при добавлении элемента в ObservableCollection выявить и избежать копий?

    При попытке изменения где? Прямо в самом DataGrid? Вдруг это всплывающее окно.
  • Почему не выводит список WPF?

    Роман, использование IDisposable и using не ограничивается только перечисленными кейсами использования. Я взял часть кода из старого проекта, который брал за основу код из автоматически создаваемого шаблона для проекта с MvvmLight, там создавался класс ViewModelLocator, в котором создавалось два свойства: public static MainViewModel MainStatic { get; private set; } и public static MainViewModel Main { get; private set; } = MainStatic; и был статический метод ViewModelLocator.Cleanup(), в котором, если я не путаю ничего, вызывался этот MainStatic.Dispose, или я где-то это нагуглил, а там отродясь вызывался метод MainStatic.Cleanup интерфейса ICleanup, что сути не меняет, тот же Dispose, но без возможности использовать using.

    Update: посмотрел историю гита, скорее всего, всё-таки, я где-то это нагуглил в таком виде когда-то давно.
    https://github.com/lbugnion/mvvmlight/blob/master/...
  • Почему не выводит список WPF?

    jostario, я проект рабочий уже набросал с этим классом ViewModelBase и ViewModelLocator, но смотрю тебе ответили уже.
  • Почему не выводит список WPF?

    jostario, держи ViewModelBase. Если никогда не будешь использовать OnDispose, то можешь удалить интерфейс IDisposable и связанные методы OnDispose и Dispose.

    Использовать так:
    namespace WpfAppDataGridHelp.ViewModels
    {
        internal class JobViewModel : ViewModelBase
        {
            private string _name = "";
    
            public string Name
            {
                get => _name;
                set => Set(ref _name, value);
            }
        }
    }


    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Diagnostics;
    using System.Runtime.CompilerServices;
    
    namespace WpfAppDataGridHelp.ViewModels;
    
    public abstract class ViewModelBase : INotifyPropertyChanged, IDisposable
    {
        protected ViewModelBase()
        {
        }
    
        public virtual string? DisplayName { get; protected set; }
    
        protected virtual bool ThrowOnInvalidPropertyNames { get; private set; }
    
        [field: NonSerialized]
        public event PropertyChangedEventHandler? PropertyChanged;
    
        [Conditional("DEBUG")]
        [DebuggerStepThrough]
        public void VerifyPropertyName(string propertyName)
        {
            if (TypeDescriptor.GetProperties(this)[propertyName] == null)
            {
                string msg = "Invalid property name: " + propertyName;
    
                if (ThrowOnInvalidPropertyNames) throw new Exception(msg);
    
                Debug.Fail(msg);
            }
        }
    
        protected void RaisePropertyChanged(string propertyName)
        {
            VerifyPropertyName(propertyName);
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
        }
    
        public virtual void RaisePropertyChanged<T>(
            [CallerMemberName] string? propertyName = null, 
            T? oldValue = null,
            T? newValue = null) 
            where T : class
        {
            if (string.IsNullOrEmpty(propertyName))
                throw new ArgumentException("This method cannot be called with an empty string", nameof(propertyName));
    
            RaisePropertyChanged(propertyName);
        }
    
        protected bool Set<T>(
            ref T? field, 
            T? newValue,
            [CallerMemberName] string? propertyName = null)
            where T : class
        {
            if (EqualityComparer<T>.Default.Equals(field, newValue))
                return false;
    
            var oldValue = field;
            field = newValue;
            RaisePropertyChanged(propertyName, oldValue, field);
            return true;
        }
    
        protected virtual void OnDispose()
        {
        }
    
        public void Dispose()
        {
            OnDispose();
        }
    }
  • Почему не выводит список WPF?

    А где MainViewModel создаётся? Где он добавляется в DataContext окна? (ItemsSource="{Binding Path = Jobs}" )
  • Почему не выводит список WPF?

    Зачем ты реализуешь везде INotifyPropertyChanged по новой? Вообще используй MvvmLight библиотеку для начала, а там посмотришь что лучше для тебя использовать. В крайнем случае сделай класс ViewModelBase и там реализуй этот функционал.
  • Какой уровень знаний в C# нужен для разработки игры на Unity?

    Готовые мини примеры простейших программ даже у меня в ответах можешь взять подебажить. Стиль именования и оформления кода можешь перенять, так и пишут на C# в большинстве случаев (где с маленькой буквы, где с большой, где подчёркивание).
  • Какой уровень знаний в C# нужен для разработки игры на Unity?

    Я бы начинал игры програмировать, когда на C# мне бы не составляло труда написать самому простую логику в консольном приложении, имитирующую какую-то игру. С совсем нулевым уровнем лезть сразу в Unity лично для меня сомнительная затея. Там необъятный край всего, что желательно знать и понимать. Я помню когда я изучал C#, мне не совсем понятно было даже, что такое в C# события, пока я не написал свой пример, имитирующий игру, где был класс персонаж, который что-то делал, а подписчик на событие получал инфу для логирования. Пока сам не пощупал, скажем так, я не до конца понимал, как это работает. Или это я такой, что мне нужно всё понимать, прежде чем делать.
  • Какой уровень знаний в C# нужен для разработки игры на Unity?

    "карьеру разработчика особо начинать не хочу"
    Но игру-то писать и дорабатывать хочется? Если да, то причём здесь карьера, инструментом нужно уметь пользоваться. Я бы на твоём месте сделал так. Я бы начал читать книгу по C#, завёл бы решение (solution -- *.sln расширение файла) и создавал бы подпроекты по темам, где хорошо бы комментариями описывал всё, что может забыться. Например, в проекте с встроенными типами данных (Built-in types) я бы повторил инфу из таблицы (Integral numeric types), расписал бы в виде комментариев к коду. И так по каждой теме.

    Далее я бы, чтобы не терять интерес параллельно писал бы своё первое консольное приложение. Можно даже логику какой-то игры построить попробовать, самую простую и дальше усложнять в следующем проекте или этом же.

    Вот прочитал ты книгу по основам (не читал ещё про расширенные темы, вроде "Динамические типы
    и среда DLR"; "Процессы, домены приложений и объектные контексты"; "Многопоточное, параллельное и асинхронное программирование" и т.д.), уже можешь начинать учить движок.

    Суть в том, что тебе нужна практика хотя бы на консольных приложениях, чтобы ты мог написать что-то в ООП стиле, что-то работающее. Если ты сразу полезешь в Unity, возможно, тоже что-то получится, но есть подозрение, что это будут страдания.

    Можно поступить так. Читать книгу по C#, но и ковырять Unity параллельно, возможно, пока без C# или почти без него. Это чтобы интерес не пропадал и не было постоянного желания быстрей прочитать, чтобы приступить к Unity.
  • Можете покритиковать мой код?

    mayton2019, не везде так. У нас есть правила проведения ревью. В ревью нельзя высокомерно общаться, насмехаться, грубить, принижать человека и т.д. Только в формате вежливых вопросов и замечаний.
  • Можете покритиковать мой код?

    I_suss, using namespace std; можно использовать внутри main. Проблему про засорение можно забыть на этом.
  • Зачем нужна инкапсуляция в ООП?

    IWantToBelievee, это защита не от злоумышленника, а от случайного изменения по незнанию. Это тоже важно понимать.
  • Как выполнить метод каждые 5 минут c#?

    Ещё вариант:
    https://reactivex.io/
    https://github.com/dotnet/reactive

    Конкретно это:
    https://reactivex.io/documentation/operators/timer.html
    https://reactivex.io/documentation/operators/inter...

    Но только для таймера использовать это слишком жирно будет
    Скорее это на ознакомление