• Convert.ToXXXX() vs. XXX.Parse()?

    lexxpavlov
    @lexxpavlov
    Программист, преподаватель
    Ни то, ни другое, лучше использовать TryParse. Потому что и Parse, и Convert.ToXXX выкинет исключение, и придётся использовать try catch, а в TryParse достаточно использовать if.

    Пример с числовым значением:
    int x;
    string str = Console.ReadLine();
    
    // Вариант с Parse
    try
    {
    	x = int.Parse(str);
    }
    catch (Exception)
    {
    	x = 0;
    	Console.WriteLine("Неверные данные");
    }
    
    // Вариант с Convert
    try
    {
        x = Convert.ToInt32(str);
    }
    catch (Exception)
    {
        x = 0;
        Console.WriteLine("Неверные данные");
    }
    
    // Вариант с TryParse
    if (!int.TryParse(str, out x))
    {
        Console.WriteLine("Неверные данные");		        
    }
    
    // Вариант с TryParse, если ноль устраивает
    int.TryParse(str, out x);
    Ответ написан
    Комментировать
  • Как перегрузить оператор присваивания, c#?

    Nipheris
    @Nipheris Куратор тега C#
    С точки зрения C# вы хотите не того, что нужно. В отличие от C++, где перегрузка операций даёт возможность сформировать индивидуальное поведение для каждого пользовательского типа, в C# для вас построили два основных стереотипа поведения - тип-ссылка и тип-значение - и предлагают выбрать один из них.

    Вам нужно переформулировать задачу в более общую, и понять, что вы хотите сделать на самом деле, и для чего вам понадобилось переопределение присваивания. Судя по имени класса (Person), вы явно делаете с ним что-то не то.
    Ответ написан
    3 комментария