tusharkaushik Ответов: 1

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


сэр
Я написал код для перегрузки оператора, но он не работает.
вот программа :
---------------------------------
using System;
class space
{
    int x, y, z;
    public space(int a, int b, int c)
    {
        x = a;
        y = b;
        z = c;
    }
    public void display()
    {
        Console.Write("" + x);
        Console.Write("" + y);
        Console.Write("" + z);
    }
    public static space operator -(space s)
    {
        s.x = -s.x;
        s.y = -s.y;
        s.z = -s.z;
    }
}
 class TestMain
 {
     public static void Main()
     {
         space s = new space(10, -20, -40);
         Console.Write("S:");
         -s.display();
         Console.Write("S:");
         Console.Write("S:");
         -s.display();
     }

 }
it shows the following errors:
Error	1	'space.operator -(space)': not all code paths return a value	C:\Users\LENOVO PC\Documents\Visual Studio 2010\Projects\operator_overload\operator_overload\Program.cs	17	25	operator_overload
Error	2	Only assignment, call, increment, decrement, and new object expressions can be used as a statement	C:\Users\LENOVO PC\Documents\Visual Studio 2010\Projects\operator_overload\operator_overload\Program.cs	30	10	operator_overload
Error	3	Operator '-' cannot be applied to operand of type 'void'	C:\Users\LENOVO PC\Documents\Visual Studio 2010\Projects\operator_overload\operator_overload\Program.cs	33	10	operator_overload
Error	4	Only assignment, call, increment, decrement, and new object expressions can be used as a statement	C:\Users\LENOVO PC\Documents\Visual Studio 2010\Projects\operator_overload\operator_overload\Program.cs	33	10	operator_overload

What I have tried:

sir  i have tried 
-s.display() 
but no results..

[no name]

Как вы думаете, что будет делать попытка " - s.display ()"? Сначала вы должны исправить ошибки компиляции!

tusharkaushik

Теперь я изменил код :
------------------------------------
использование системы;
классовое пространство
{
int x, y, z;
общественное пространство(int a, int b, int c)
{
x = a;
y = b;
z = c;
}
общественного недействительными дисплея()
{
Приставка.Напишите("" + x);
Приставка.Напишите("" + y);
Приставка.Напишите("" + z);
}
публичный статический места оператора (площадь с)
{
С. Х = -ы.х;
С. г = -ы.г;
С. з = -з.з;
возвращение -с;
}
}
класс TestMain
{
публичный статический пустота главный()
{
пространство s = новое пространство(10, -20, 30);
Приставка.Напишите ("S: \n\n");
s. дисплей();

Приставка.Писать ("з\п:\н");
//Приставка.Записать("с:\н");
s. дисплей();
Приставка.С readline();
}

}












я написал значение (

Теперь показываем этот вывод :
10,-20 30

1 Ответов

Рейтинг:
0

Vijay Gill

Вам нужно вернуть некоторое значение из метода перегрузки оператора. так что сделайте что-нибудь вроде "return s;"

Для другой ошибки компилятор пытается применить " - " на дисплее метода. Если вы хотите вызвать display на "негативе s", то сделайте что-то вроде"(- s).display ();".

PS: Я не уверен, что вы пытаетесь там сделать, поэтому не могу предложить лучший код. Я просто "починил" то, что сломалось.