• Монитор 2560x1440, 27 дюймов IPS на старом железе?

    anton_reut
    @anton_reut
    Начинающий веб-разработчик
    В целом потянет но на пределе.
    603a2938c95e8823635748.jpeg

    В играх думаю будет очень мало фпс, в играх ставь разрешение 1280x720 как тебе советовали выше.
    Ответ написан
    Комментировать
  • Как правильно преобразовать 'char[]' в 'string[]'?

    Morpheus_God
    @Morpheus_God
    У меня работает.
    class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine("Enter your name: ");
                string name = Console.ReadLine();
                char[] charArr = name.ToCharArray();
    
                Array.Reverse(charArr);
                string reName = string.Join("",charArr);
                Console.WriteLine(reName);
                Console.ReadKey();
            }
        }
    Ответ написан
    1 комментарий
  • Как обработать событие из DataTemplate нажатия радиокнопок?

    lexxpavlov
    @lexxpavlov
    Программист, преподаватель
    ListBox (как и другой наследник ItemsControl) имеет список элементов (удобнее всего его указывать через ItemsSource). Каждый элемент списка строится отдельным пунктом. У каждого пункта автоматически устанавливается DataContext - тот элемент исходного списка, который строится. В DataTemplate хорошо и правильно указывать нужный тип, который будет у элемента в датаконтексте, тогда появится подсказка у {Binding} внутри шаблона.

    public class Item : BaseViewModel
    {
        private string _name;
        public string Name 
        { 
            get => _name;
            set
            {
                _name = value;
                RaisePropertyChanged();
            }
        }
        
        private int _itemMode;
        public int ItemMode 
        { 
            get => _itemMode;
            set
            {
                _itemMode = value;
                RaisePropertyChanged();
            }
        }
    }
    
    public class ItemsList
    {
        public ObservableCollection<Item> Items { get; } = new ObservableCollection<Item>
        {
            new Item { Name = "Один", ItemMode = 1 },
            new Item { Name = "Два", ItemMode = 2 },
            new Item { Name = "Три", ItemMode = 3 },
        };
    }

    <Grid>
        <Grid.Resources>
            <converters:IntToBoolConverter x:Key="IntToBoolConverter"/>
            <DataTemplate DataType="{x:Type viewModels:Item}">
                <Border x:Name="Data">
                    <Grid x:Name="ContentBase" Margin="1,0">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="Auto"/>
                            <ColumnDefinition/>
                            <ColumnDefinition/>
                            <ColumnDefinition/>
                        </Grid.ColumnDefinitions>
                        <Label Name="DisplayText" Grid.Column="0" Content="{Binding Name}"/>
                        <RadioButton Name="_1" Grid.Column="1" Content="1" 
                                     IsChecked="{Binding ItemMode, Converter={StaticResource IntToBoolConverter}, ConverterParameter=1}"/>
                        <RadioButton Name="_2" Grid.Column="2" Content="2" 
                                     IsChecked="{Binding ItemMode, Converter={StaticResource IntToBoolConverter}, ConverterParameter=2}"/>
                        <RadioButton Name="_3" Grid.Column="3" Content="3" 
                                     IsChecked="{Binding ItemMode, Converter={StaticResource IntToBoolConverter}, ConverterParameter=3}"/>
                    </Grid>
                </Border>
            </DataTemplate>
        </Grid.Resources>        
        <Grid.DataContext>
            <viewModels:ItemsList/>
        </Grid.DataContext>
        <ListBox ItemsSource="{Binding Items}"/>
    </Grid>

    Код класса BaseViewModel
    public class BaseViewModel : INotifyPropertyChanged
    {
        public event PropertyChangedEventHandler PropertyChanged;
        
        protected virtual void RaisePropertyChanged([CallerMemberName] string propertyName = null)
        {
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
        }
    }

    Код конвертера
    public class IntToBooleanConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            return value != null 
                && parameter != null 
                && value.ToString() == parameter.ToString();
        }
     
        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            if (value == null || parameter == null) return Binding.DoNothing;
    
            int result;
            if ((bool)value && int.TryParse(parameter.ToString(), out result))
            {
                return result;
            }
    
            return Binding.DoNothing;
        }
    }

    Ответ написан
    8 комментариев
  • Связка Electron и C#?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    https://github.com/Wagnerp/Krypton-NET-4.70
    https://github.com/N-a-r-w-i-n/MetroSet-UI

    .. и кстати да - чем не угодил WPF? (в кровавом энтерпрайзе WinForms вообще не считают за платформу, более того - кто с нее начал, считается инвалидом)

    а еще - чем привлек Electron.NET? (там же придется овладевать js/css/html если кто то сказал, что это вместе - праздничный пирог... кхм...)

    и вспомогательный вопрос - вам нужна кроссплатформенность? (тогда только Electron.NET, точнее возможно Electron.NET, но вариантов на много больше.... но если цель винда - забудьте и про Electron.NET)

    upd вообще то "мордашек" до дури... как для форм, так и для впф... просто .. дружите с поисковиками
    Ответ написан
    Комментировать
  • Связка Electron и C#?

    @OwDafuq
    Чем не угодил WPF?
    Ответ написан
    Комментировать
  • Почему Ubuntu ворует мои мегабайты при разметке диска?

    erniesto77
    @erniesto77
    oop, rb, py, php, js
    ubuntu ворует место чтобы передавать ваши личные данные инопланетянам
    Ответ написан
    Комментировать
  • Почему стандартная командная строка Windows 7 не показывает все результаты?

    Жмякните на консольном окошке в верхнем левом углу, зайдите в properties, и выставьте желаемый buffer size. Здесь же можете задать доп. папаметры поведения консоли, цвета и т.п.

    5a6321a4f1054552518974.png
    Ответ написан
    Комментировать
  • Есть ли Обучение C# с практикой?

    @black_xe
    Практикой ты сам должен заниматься, а ни кто то тебя должен просить сделать это. А по поводу книг зря ты так, во многих книгах очень хорошо и понятно преподноситься информация. Читаешь, изучаешь документацию и сразу же - практикуешься
    Ответ написан
    2 комментария
  • Отвалилась микросхема сзади процессора?

    kotomyava
    @kotomyava
    Системный администратор
    Это не микросхема, а сборка конденсаторов. Может повлиять на стабильность работы.
    Ответ написан
    Комментировать
  • Как исправить в С# символы вместо русского языка в visual studio?

    Console.OutputEncoding = Encoding.UTF8
    Ответ написан
    Комментировать
  • Почему unsafe код небезопасен и его редко используют в C#?

    @kttotto
    пофиг на чем писать
    Ваша задача нормально решается и без unsafe кода, без костылей и наворотов. Просто мыслить в терминах C++ и писать код на C# не совсем сопоставимо. Если хотите менять непосредственно значения, есть передача значений по ссылке, есть out и ref параметры, для 150 однотипных значений есть массивы, есть списки (и для разнотипных) . Просто нужно подумать в рамках идеологии C#.

    Хотя мне не совсем понятна проблема изменить переменные в классе и зачем для этого писать 150 методов. Класс это же объект, который передается по ссылке. Передав объект, Вы будете менять эти переменные у объекта как хотите. Если хотите передать куда-то непосредственно поле класса типа int и хотите, чтоб оно изменилось там, то передайте его как out/ref параметр.
    Ответ написан
    8 комментариев
  • Почему unsafe код небезопасен и его редко используют в C#?

    @mafusailmagoga
    Редко unsafe используют - потому что нахрен он нужен в языке, который принципиально улучшен как раз тем что код полностью managled.

    Уж всяко не в вашем примере, а ради задач посерьезнее стоит заморачиваться с unsafe.

    А прямая работа с указателями исключена - потому что как раз именно с указателями в С++ случается чуть ли не больше всего ошибок у программистов.

    Плюс хуже работает сборщик мусора, когда вы используете указатели.

    Считаете себя крутым и пишущим без ошибок (хотя это и не так, 100% не так) и вам не нравятся ограничения C# - ну и не пишите на C#, в чем проблем-то?

    Но возмущаться что в одном языке одна идеология, а в другом другая - как то странно.
    Зачем бы были нужны языки с одинаковой идеологией.
    Они очень разные.

    С# и C++ только по синтаксису сходны.
    Не нужно чисто механически привносить в один язык подход из другого языка.


    Т.е. есть ситуация - у меня есть класс с 150 переменными (int), я хочу непосредственно эти переменные менять, передавая её в другой класс


    Вероятность схлопотать сторонние эффекты очень велика.
    Класс это ведь не просто одна переменная как правило.
    Если вы эту переменную инкрементируйте, состояние всего класса как то может сильно поменяться.
    Если вы меняете напрямую, не давая классу это проконтроллировать - непонятно к чему это может привести.


    НО мне что, 150 функций


    А их и не должно быть у вас 150.
    См. антипаттерн - класс Бог.
    Ответ написан
  • Какая программа для написания программ на C# лучше всего подходит для виндовс 7?

    Dyaminigo
    @Dyaminigo
    .NET Developer
    Подобные программы называются средами программирования (IDE).
    Можно установить самую популярную среду программирования, как Visual Studio. Рекомендовал бы скачать Visual Studio 2017 Community.
    Ответ написан
    Комментировать
  • Чем отличается ассемблер от машинного кода?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Ассемблер - это язык программирования. Машинный код - представление программы в виде байтов (битов, слов и т.п.), понятное процессору. Для перевода ассемблера в машинный код необходим компилятор. При этом одна команда ассемблера, как правило, компилируется в одну команду машинного кода, но может занимать несколько байтов в памяти. Конкретное представление зависит от процессора, для которого предназначена программа.
    Если электронные часы имеют микропроцессор и перезаписываемую память, то да, их можно перепрограммировать. Для этого понадобится соответствующее устройство - программатор. Потом надо прочитать и декомпилировать текущую прошивку, разобраться в коде, изменить его, скомпилировать и залить обратно.
    Если же в часах память с однократной записью или они вообще без микропроцессора, на обычной логике - то придётся взять в руки паяльник.
    Ответ написан
    2 комментария
  • Почему в C++ нужно строить всю программу на ООП (длинный вопрос)?

    @Mercury13
    Программист на «си с крестами» и не только
    Задача ООП: 1) Локализовать изменения состояния объекта (инкапсуляция); 2) связывать разные кирпичики данных через стандартные интерфейсы (полиморфизм).

    Простейший тетрис не слишком велик, чтобы его писать на чистом ООП.
    Но представьте себе, мы начинаем налаживать настраиваемое управление джойстиком или клавиатурой. И тогда у нас появляется такой код.
    enum {
      BT_LEFT = 1,
      BT_RIGHT = 2,
      BT_ROTATE = 4,
      BT_SOFTDROP = 8,
      BT_HARDDROP = 16,
      BT_PAUSE = 32,
      BT_CONNECTED = 32768,   // бит, указывающий, что контроллер подключён
    };
    class Controller {  // интерфейс
    public:
      virtual unsigned poll() const = 0;   // сочетание битов BT_XXX
      virtual ~Controller = default;
    };

    Классы Keyboard и Joystick поддерживают интерфейс Controller, и подмена клавиатуры на джойстик и наоборот ничего не изменит.
    Вот вам полиморфизм.

    Текстовый редактор превращаем в многооконный — берём класс Editor и пристраиваем его не к программе в целом, а к MDI-окошку. Вот вам инкапсуляция — локализованное изменение состояния.

    Я как-то мучил движок Doom. Он написан в самом настоящем объектном стиле на чистом Си! Хотя и там были проблемы: сетевой код был куда хуже по качеству, чем сам движок. Писали разделённый экран, глобальную переменную netgame разделили на две, multiplayer и netgame и долго-долго правили баги, где multiplayer, где netgame (было дело, участник десматча ввёл IDKFA, это сработало и вызвало рассинхронизацию). А код пользовательского интерфейса — вообще медвежуть!
    Ответ написан
    Комментировать
  • Как сделать видимыми табуляции в VSCode?

    k12th
    @k12th
    console.log(`You're pulling my leg, right?`);
    Эти штуки называются indent guides. А включается добавлением "editor.renderIndentGuides": true в настройках.
    Ответ написан
    Комментировать
  • Как в c# в TextBox вывести текст с параметрами {0}?

    tomnolane
    @tomnolane
    профессиональный разработчик
    доп.
    в c# (версии 6) есть такая возможность (чтобы не цифры использовать):
    string bla = "первое слово";
    string bla2 = "второе слово";
    textBox1.Text = string.Format($"({bla}, {bla2})"); //знак $ нужен для того, чтобы сказать, что тут именованные переменные нужно брать
    Ответ написан
    Комментировать
  • Как работает Timer в WPF?

    Terminaft
    @Terminaft
    В WPF, судя по тому что я читал, лучше использовать DispatcherTimer (пространство имен System.Threading).

    Грубо говоря,
    private DispatcherTimer timer = null;
    private int x;
    
    private void timerStart () {
                timer = new DispatcherTimer();  // если надо, то в скобках указываем приоритет, например DispatcherPriority.Render
                timer.Tick += new EventHandler(timerTick);
                timer.Interval = new TimeSpan(0, 0, 0, 0, 500);
                timer.Start();
    }
    
    private void timerTick(object sender, EventArgs e)
    {
                x++;
    }
    Ответ написан
    9 комментариев