Top.Mail.Ru
Ответы

Перегрузка операторов в c#

почему оператор не перегружается, и не ставится унарный минус

namespace Base
{
class YourClass1
{
public int _Value { get; private set; }

public YourClass1(int n)
{
_Value = n;
}

public static int operator +(YourClass1 a)
{
return -a._Value;
}

class THE_basic_Program
{
static void Main()
{
YourClass1 myclass1 = new YourClass1(100);

Console.WriteLine(+myclass1._Value);
}
}
}

По дате
По рейтингу
Аватар пользователя
Новичок
5мес

чтобы все работало правильно, нужно:

Перегрузить оператор - для работы с унарным минусом.
Использовать экземпляр YourClass1, а не просто поле _Value

Аватар пользователя
Высший разум
5мес
1234567891011121314151617
 using System; 
namespace Base {  
    class MyClass  {  
        private readonly int value; 
        public MyClass(int n) {  
            value = n;  
        }  
        public static MyClass operator+(MyClass a) => new MyClass(-a.value); 
        public override string ToString() => $"{value}"; 
    } 
    class Program  { 
        static void Main() {  
            var myClass = new MyClass(100); 
            Console.WriteLine(+myClass); 
        }  
    }  
}