Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
8 / 8 / 2
Регистрация: 20.02.2009
Сообщений: 139
1

Действие с методом класса

26.03.2009, 19:35. Показов 1461. Ответов 17
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуй, я бы хотел задать вопрос по поводу применения класса с методом.

Допустим, у меня есть три переменные ("a", "b" и "c"). Нужно сложить a,b и передать результат "c" (a и b вводимые значения через форму - textbox, с выводится тоже в textbox.
Я создал класс, объявил переменные:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class MFunc
    {
        private int a;
        private int b;
        private float c;
 
        public int A
        {
            get { return a; }
            set { a = value; }
        }
        public int B
        {
            get { return b; }
            set { b = value; }
        }
        public float C
        {
            get { return c; }
            set { c = value; }
        }
А вот с методом у меня проблема, прописал его так:
C#
1
2
3
4
5
public void Func()
        {
            c = a + b;
            return;
        }
Дело в том, что я не пойму, как сделать, чтобы a,b сложились и передали значение "c".
В форме я объявил класс и сделал передачу значений по событию кнопки:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public partial class Form1 : Form
    {
        private MFunc mF;
        public Form1()
        {
            InitializeComponent();
            mF = new MFunc();
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            mF.A = Convert.ToInt32(this.txtA.Text);
            mF.B = Convert.ToInt32(this.txtB.Text);
 
            this.txtRes.Text = mF.C.ToString();
 
        }
в textbox выводится нулевое значение.

Буду очень благодарен, если кто поможет с этой простой задачей.
Спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.03.2009, 19:35
Ответы с готовыми решениями:

XML сериализация класса с методом, который принимает параметры
такой вопрос: можно ли как-нибудь в классе описать метод, который принимает как параметр, скажем,...

Распараллеливание вычислений скалярного произведения векторов с методом класса Task
Ребят, помогите написать программу. Уже сессия, а я все еще тупая в этом предмете... Сколько голову...

Проблема с методом Send у класса System.Net.Sockets.Socket
Привет всем! Вот фрагмент кода: private Socket FSocket; protected override void...

Решение СЛАУ методом простой итерации, Методом Зейделя, Методом Релаксации
Всем доброго времени суток, помогите пожалуйста реализовать данные методы, а то у меня не...

17
308 / 261 / 70
Регистрация: 01.12.2008
Сообщений: 1,031
26.03.2009, 20:32 2
Функция должна что-то возвращать
public float Func()
{
c = a + b;
return с ;
}
Ну в первом приближении, наверное, так.
0
8 / 8 / 2
Регистрация: 20.02.2009
Сообщений: 139
26.03.2009, 20:41  [ТС] 3
Цитата Сообщение от wwowa Посмотреть сообщение
Функция должна что-то возвращать
public float Func()
{
c = a + b;
return с ;
}
Ну в первом приближении, наверное, так.
всеравно нулевое значение выдает.
0
56 / 55 / 7
Регистрация: 17.03.2009
Сообщений: 112
26.03.2009, 21:55 4
Дело в том, что в коде нет строки, которая вызывала бы метод Func(). А если метод не выполняется, откуда взяться значению c?
0
8 / 8 / 2
Регистрация: 20.02.2009
Сообщений: 139
26.03.2009, 21:59  [ТС] 5
Цитата Сообщение от Destroyer87 Посмотреть сообщение
Дело в том, что в коде нет строки, которая вызывала бы метод Func(). А если метод не выполняется, откуда взяться значению c?
Вы можете подсказать, как это сделать?
0
56 / 55 / 7
Регистрация: 17.03.2009
Сообщений: 112
26.03.2009, 22:06 6
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public partial class Form1 : Form
 
    {
        private MFunc mF;
        public Form1()
        {
            InitializeComponent();
            mF = new MFunc();
        }
        private void button2_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            mF.A = Convert.ToInt32(this.txtA.Text);
            mF.B = Convert.ToInt32(this.txtB.Text);
            mF.Func();
            this.txtRes.Text = mF.C.ToString();
        }
и кстати в этом случае не обяхательно, чтобы Func() что-либо возвращал. если делать с возвращением, то
C#
1
2
3
4
5
6
private void button1_Click(object sender, EventArgs e)
        {
            mF.A = Convert.ToInt32(this.txtA.Text);
            mF.B = Convert.ToInt32(this.txtB.Text);
            this.txtRes.Text =  mF.Func().ToString();            
        }
1
8 / 8 / 2
Регистрация: 20.02.2009
Сообщений: 139
26.03.2009, 22:11  [ТС] 7
В данном случае, значит, я могу в этом методе хранить несколько переменных на вывод?
0
56 / 55 / 7
Регистрация: 17.03.2009
Сообщений: 112
26.03.2009, 22:13 8
да, если в методе Func() будете присваивать значение нескольким переменным.
0
8 / 8 / 2
Регистрация: 20.02.2009
Сообщений: 139
26.03.2009, 22:32  [ТС] 9
Цитата Сообщение от Destroyer87 Посмотреть сообщение
да, если в методе Func() будете присваивать значение нескольким переменным.
Великолепно! Спасибо за внимание.
0
1923 / 428 / 41
Регистрация: 12.07.2007
Сообщений: 2,062
27.03.2009, 07:20 10
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class MFunc
{
    private int a;
    private int b;
 
    public int A
    {
        get { return a; }
        set { a = value; }
    }
 
    public int B
    {
        get { return b; }
        set { b = value; }
    }
 
    public float C
    {
        get { return A+B; }
    }
}
Тогда будет работать:
Код
this.txtRes.Text = mF.C.ToString();
1
8 / 8 / 2
Регистрация: 20.02.2009
Сообщений: 139
27.03.2009, 12:12  [ТС] 11
Спасибо, мне это тоже пригодится.
0
Комбайнёр
1606 / 704 / 77
Регистрация: 27.05.2008
Сообщений: 2,535
27.03.2009, 12:31 12
Вобщем нужно было сделать перегрузку оператора "+" для класса, тогда можно было бы создать несколько переменных этого калсса и сложить как и простые типы.
0
8 / 8 / 2
Регистрация: 20.02.2009
Сообщений: 139
27.03.2009, 18:33  [ТС] 13
Пока я не удалился от темы, хотел бы еще кое-что спросить.
Допустим у меня появилась 2-ая форма (Form2). Мне нужно передать туда значение из класса таким же методом. Сделал так:
Для Form1
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
public partial class Form1 : Form
    {
        private MFunc mF;
        private Form2 frm2;
        public Form1()
        {
            InitializeComponent();
            mF = new MFunc();
            frm2 = new Form2();
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            mF.A = Convert.ToInt32(this.txtA.Text);
            mF.B = Convert.ToInt32(this.txtB.Text);
            mF.Func();
            this.txtRes.Text = mF.C.ToString();
            frm2.Show();
        }
    }
а для Form 2
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public partial class Form2 : Form
    {
        private MFunc mF;
        public Form2()
        {
            InitializeComponent();
            mF = new MFunc();
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
 
        private void Form2_Load(object sender, EventArgs e)
        {
            mF.Func();
            this.txtC.Text = mF.C.ToString();
        }
    }
Класс получился таким:
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
public class MFunc
    {
        private int a;
        private int b;
        private float c;
 
        public int A
        {
            get { return a; }
            set { a = value; }
        }
        public int B
        {
            get { return b; }
            set { b = value; }
        }
        public float C
        {
            get { return c; }
            set { c = value; }
        }
 
        public void Func()
        {
            c = a + b;
        }
    }
Дело в том, что значения из класса заносятся только для Form 1, а Form 2 получает только нулевое значение. Как это можно исправить и сохранить переменную "C" для еще чего-нибудь, например для Form 2?

Спасибо.
0
8 / 8 / 2
Регистрация: 20.02.2009
Сообщений: 139
29.03.2009, 14:32  [ТС] 14
У кого-нибудь есть мысли, как это можно сделать?
0
56 / 55 / 7
Регистрация: 17.03.2009
Сообщений: 112
29.03.2009, 15:09 15
передавай к конструктор Form2 значение MFunc, а не объявляй его заново.
0
8 / 8 / 2
Регистрация: 20.02.2009
Сообщений: 139
29.03.2009, 15:44  [ТС] 16
Цитата Сообщение от Destroyer87 Посмотреть сообщение
передавай к конструктор Form2 значение MFunc, а не объявляй его заново.
Вы не могли бы подсказать, как это делается?

я попробовал так:
C#
1
2
3
4
5
6
7
8
        private MFunc mF;
        private float C;
        public Form2()
        {
            InitializeComponent();
            mF = new MFunc();
            C = mF.C;
        }
но результата это не дало.
0
56 / 55 / 7
Регистрация: 17.03.2009
Сообщений: 112
29.03.2009, 15:50 17
Это не правильно.

Вот:

C#
1
2
3
4
5
6
7
8
9
10
11
12
private MFunc mf;
 
public Form2(MFunc mf)
{
     InitializeComponent();
     this.mf = mf;
}
 
А в Form1 в месте инициализации Form2
надо писать так 
 
frm2 = new Form2(mf);
Добавлено через 3 минуты 11 секунд
когда пишется mF = new MFunc(); - это значит, что создается новый экземпляр объекта MFunc, а не используется старый.
0
8 / 8 / 2
Регистрация: 20.02.2009
Сообщений: 139
29.03.2009, 16:15  [ТС] 18
Заработало! Спасибо.
0
29.03.2009, 16:15
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.03.2009, 16:15
Помогаю со студенческими работами здесь

Решить уравнение методом итераций, методом ньютона и методом половинного деления
решить уравнение методом итераций,методом ньютона и методом половинного деления x-1 / (3 + sin...

Действие над объектом класса выполняет:
Кому не сложно, помогите с тестом :)

Как получить значение класса и выполнить действие?
Здравствуйте! Помоги пожалуйста в решении следующей задачи. В JS я полный ноль. Поиск в...

Выполнить действие ко всем объектам указанного класса
Как правильно написать данный код? // player.as ... public class player extends MovieClip { ...


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

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru