Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 14.02.2019
Сообщений: 4
1

Не могу понять почему не вызывается метод? Как вывести метод Plus?

14.02.2019, 14:49. Просмотров 912. Ответов 7
Метки нет (Все метки)

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
namespace lesson3
{
    
    
    class Program
    {
        struct Complex
        {
            public double im;
            public double re;
 
            //  в C# в структурах могут храниться так же действия над данными
            public Complex Plus(Complex x)
            {
                Complex y;
                y.im = im + x.im;
                y.re = re + x.re;
                Console.WriteLine(y);
                return y;
                
            }
            //  Пример произведения двух комплексных чисел
            Complex Multi(Complex x)
            {
                Complex y;
                y.im = im * x.im + re * x.im;
                y.re = re * x.im - im * x.re;
                return y;
            }
 
            public string ToString()
            {
                return re + "+" + im + "i";
            }
        }
        static void Main(string[] args)
        {
            
            Complex x = new Complex()
            {
                 im = 4,
                 re = 2
            };
            x.Plus();
            Console.WriteLine(x.Plus());
            Console.Read();
        }
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.02.2019, 14:49
Ответы с готовыми решениями:

Почему не вызывается метод Client_DownloadProgressChanged
using System; using System.Net; namespace WebClient { class Program { public static...

Не могу понять, как мне вызвать метод TwiceUsedWord() в WordsGen()...
Не могу понять, как мне вызвать метод TwiceUsedWord() в WordsGen(). Хотя, возможно, я в корне не...

Почему метод выполняется дважды хотя один раз вызывается
Добрый день. В программе вызывается нек. метод, по событию изменение текста в сомбобоксе...

Почему при восходящем приведении типов вызывается метод класса потомка?
class T1 { public virtual void P() { Console.WriteLine(1); } } class T2 : T1...

7
12 / 11 / 2
Регистрация: 16.10.2018
Сообщений: 45
14.02.2019, 15:24 2
C#
1
2
3
4
5
6
public Complex Plus()
{
Complex y;
y.im = im*2;
y.re = re*2;
//....
0
12 / 11 / 2
Регистрация: 16.10.2018
Сообщений: 45
14.02.2019, 22:01 3
Не правильно подсказал .
C#
1
var sumStruct = x.Plus(y)
вы складываете 2 структуры . Ту из которой вызываете метод и ту которую передаете .
1
0 / 0 / 0
Регистрация: 14.02.2019
Сообщений: 4
15.02.2019, 07:04  [ТС] 4
Все равно не получается выводит Lesson.Complex+Complex
Вот код где ошибка может данные не те передаю.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
namespace lesson3
{
    
    
    class Program
    {
        struct Complex
        {
            public double im;
            public double re;
 
            //  в C# в структурах могут храниться так же действия над данными
            public Complex Plus(Complex x)
            {
                Complex y;
                y.im = im + x.im;
                y.re = re + x.re;
                Console.WriteLine(y);
                return y;
                
            }
            //  Пример произведения двух комплексных чисел
            Complex Multi(Complex x)
            {
                Complex y;
                y.im = im * x.im + re * x.im;
                y.re = re * x.im - im * x.re;
                return y;
            }
 
            public string ToString()
            {
                return re + "+" + im + "i";
            }
        }
        static void Main(string[] args)
        {
            Complex x = new Complex()
            
            {
                 im = 4,
                 re = 2
            };
            x.ToString();
            Complex y = new Complex()
            {
                im = 4,
                re = 2
            };
            var sumStruct = x.Plus(y);
            Console.WriteLine(sumStruct);
            Console.Read();
        }
    }
}
0
281 / 200 / 72
Регистрация: 17.08.2014
Сообщений: 784
15.02.2019, 09:09 5
Это что такое? откуда в методе появился "Complex y" который к тому же не присвоено значение.
В мульти таже ересь.
C#
1
2
3
4
5
6
7
8
9
 public Complex Plus(Complex x)
            {
                Complex y;//это тут зачем.
                y.im = im + x.im;
                y.re = re + x.re;
                Console.WriteLine(y);
                return y;
                
            }
делайте хотя бы так.
C#
1
2
3
4
5
6
7
8
9
10
public Complex Plus(Complex x)
            {
              
                this.im = this.im + x.im; // добавляем к текущему значению значение из х.
// данную запись можно записать еще и так    this.im += x.im; 
                this.re = this.re + x.re;
               // Console.WriteLine(y); // не зачем в методах сложения делать выводу. Для этого другие методы должны быть.
                return this;
                
            }
Добавлено через 3 минуты
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
namespace lesson3
{
 
 
class Program
{
struct Complex
{
public double im;
public double re;
 
// в C# в структурах могут храниться так же действия над данными
public Complex Plus(Complex x)
{
 
im = im + x.im;
re = re + x.re;
 
return this;
 
}
// Пример произведения двух комплексных чисел
Complex Multi(Complex x)
{
 
im = im * x.im + re * x.im;
re = re * x.im - im * x.re;
return this;
}
 
public string ToString()
{
return re + "+" + im + "i";
}
}
static void Main(string[] args)
{
Complex x = new Complex()
 
{
im = 4,
re = 2
};
x.ToString();
Complex y = new Complex()
{
im = 4,
re = 2
};
var sumStruct = x.Plus(y);
Console.WriteLine(sumStruct);
Console.Read();
}
}
}
если же вам нужно сделать temp свойство которое будет считаться не меняя основную структуру то тогда надо было делать так
C#
1
2
3
4
5
6
7
8
9
10
public Complex Plus(Complex x)
{
Complex y = new Complex(){ im = this.im, re = this.re };
//либо просто  Complex y = new Complex();
y.im = im + x.im;
y.re = re + x.re;
 
return y;
 
}
0
0 / 0 / 0
Регистрация: 14.02.2019
Сообщений: 4
15.02.2019, 09:49  [ТС] 6
Так почему в переменной sumStruct в консоли выдает "lesson3.Program+Complex" а не числа? то что посоветовали не чего не изменилось.
0
281 / 200 / 72
Регистрация: 17.08.2014
Сообщений: 784
15.02.2019, 11:36 7
Дмитрий19922, потому что sumStruct является тип Complex
а в данном случае Console.WriteLine(sumStruct); вызывается базовый метод Object.ToString(); так как ваш метод ToString это не перегруженный метод (отсутствует override) то вы и видите не то что ожидаете.
чтобы выводились числа нужно сделать в выводе
C#
1
Console.WriteLine(sumStruct.ToString());
либо исправить метод ToString() в структуре добавив override
C#
1
2
3
4
public override string ToString()
{
return re + "+" + im + "i";
}
1
0 / 0 / 0
Регистрация: 14.02.2019
Сообщений: 4
15.02.2019, 12:47  [ТС] 8
Спасибо все получилось))
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.02.2019, 12:47

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Почему если при вызове метода Foo от типа B, в объекте класса FooImp вызывается метод от А?
Поясните пожалуйста, почему если при вызове метода Foo от типа B, в объекте класса FooImp...

Почему не вызывается метод?
Есть класс с прорисовкой меню. Так же есть класс с прорисовкой JFrame. В классе с фреймом хочу...

Почему вызывается не тот метод?
При вызове метода Highlight() у экземпляра SomrClass вызывается базовая реализация class...

Почему не вызывается метод setColor?
Код использующий наследование, не могу вызвать метод setColor объект d; #include <iostream>...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.