С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/29: Рейтинг темы: голосов - 29, средняя оценка - 4.52
0 / 0 / 0
Регистрация: 31.10.2018
Сообщений: 19
1
.NET 4.x

Имя не существует в текущем контексте

01.11.2018, 03:09. Показов 6014. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, я новичок. Возникла проблема в Windows Forms. Как сделать, чтобы созданный объект в одном методе, был виден в другом? Гуглил, понятных мне объяснений не нашел( Может быть проблема и не в этом, помогите пожалуйста.

Код программы:
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace WindowsFormsApp4
{
    public partial class Form1 : Form
    {
 
        public Form1()
        {
            InitializeComponent();
        }
 
        public class Employee
        {
            public string Name;
            public string Position;
            public string Introduce()
            {
                return "\nFull name: " + Name + "\nPosition: " + Position + "\n";
            }
 
        }
 
        public class Animal
        {
            public string Kind;
            public string Req;
            public bool IsReq;
            public string Disease;
            public bool IsSick;
            public string Introduce()
            {
                return "Kind: " + Kind + "\nRequirement: " + Req + "\nDisease: " + Disease + "\n";
            }
 
            public Animal(string kind, string req, string disease)
            {
                Kind = kind;
                Req = req;
                IsReq = true;
                Disease = disease;
                IsSick = true;
                MessageBox.Show(Introduce());
            }
 
            public Animal(string kind, string req)
            {
                Kind = kind;
                Req = req;
                IsReq = true;
            }
        }
 
        public class Keeper : Employee
        {
            private List<string> Skills = new List<string>();
 
            public Keeper(string name)
            {
                Name = name;
                Position = "Keeper";
                MessageBox.Show(Introduce());
            }
 
            public void AddSkill(string skill)
            {
                Skills.Add(skill);
            }
 
            public bool Care(Animal an)
            {
                if (Skills.Contains(an.Req))
                {
                    Console.WriteLine("\nKeeper " + Name + " сares for animal " + an.Kind + " which needs " + an.Req + "\n");
                    an.IsReq = false;
                    return true;
                }
 
                return false;
            }
        }
 
        public class Vet : Employee
        {
            private List<string> Diseases = new List<string>();
 
            public Vet(string name)
            {
                Name = name;
                Position = "Vet";
                MessageBox.Show(Introduce());
            }
 
            public void AddDisease(string disease)
            {
                Diseases.Add(disease);
            }
 
            public bool Heal(Animal an)
            {
                if (Diseases.Contains(an.Disease))
                {
                    MessageBox.Show("\nVet " + Name + " heals an animal " + an.Kind + " for disease " + an.Disease + "\n");
                    an.IsSick = false;
                    return true;
                }
 
                return false;
            }
        }
 
        private void btn1_Click(object sender, EventArgs e)
        {
            string s1 = tB1.Text;
            string s2 = tB2.Text;
            string s3 = tB3.Text;
 
            Animal An = new Animal(s1, s2, s3);
        }
 
        public void btn2_Click(object sender, EventArgs e)
        {
            string s1 = tbVet.Text;
            Vet Worker1 = new Vet(s1);
        }
 
        private void btn3_Click(object sender, EventArgs e)
        {
            string s1 = tbKeeper.Text;
            Keeper Worker2 = new Keeper(s1);
        }
 
        public void btn4_Click(object sender, EventArgs e)
        {
            string s1 = tbVetAdd.Text;
            Worker1.AddDisease(s1);
            Worker1.Heal(An);
        }
    }
}
А вот проблемная часть:

C#
1
2
3
4
5
6
public void btn4_Click(object sender, EventArgs e)
        {
            string s1 = tbVetAdd.Text;
            Worker1.AddDisease(s1);
            Worker1.Heal(An);
        }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.11.2018, 03:09
Ответы с готовыми решениями:

Имя не существует в текущем контексте
Такая проблема, не могу понять как сделать чтобы массив copies был виден в операторе using. На...

Имя не существует в текущем контексте
Всем привет, объясните, пожалуйста чайнику. Имеются два класса. в первый класс надо передать...

Имя не существует в текущем контексте
Здравствуйте, я пытаюсь реализовать авторизацию и регистрацию через базу данных на SQLite....

Имя не существует в текущем контексте
namespace ePlayer { public sealed partial class MainPage : Page { ...

2
Эксперт .NET
6510 / 4086 / 1606
Регистрация: 09.05.2015
Сообщений: 9,553
01.11.2018, 03:19 2
Если вы хотите чтобы переменная была доступна из разных методов, её нужно сделать полем класса, в котором эти методы находятся.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Class1
{
    string field1;
 
    void Method1()
    {
          field1 = "1"; // записываем значение
    }
 
    void Method2()
    {
          Console.WriteLine(field1); // читаем значение
    }
}
0
Модератор
Эксперт .NET
15854 / 11000 / 2854
Регистрация: 21.04.2018
Сообщений: 32,311
Записей в блоге: 2
01.11.2018, 10:25 3
Цитата Сообщение от KrusX Посмотреть сообщение
А вот проблемная часть:
У Вас проблемная часть не только это. Вы просто пока не использовали другие объявленные Вами переменные
C#
120
121
122
123
124
125
126
127
        private void btn1_Click(object sender, EventArgs e)
        {
            string s1 = tB1.Text;
            string s2 = tB2.Text;
            string s3 = tB3.Text;
 
            Animal An = new Animal(s1, s2, s3);
        }
При попытке их использования вне этого метода, они все будут недоступны. Объявите их на уровне формы, а в методах присваивайте-получайте их значения.
C#
120
121
122
123
124
125
126
127
128
129
130
        string s1;
        string s2;
        string s3;
        private void btn1_Click(object sender, EventArgs e)
        {
            s1 = tB1.Text;
            s2 = tB2.Text;
            s3 = tB3.Text;
 
            Animal An = new Animal(s1, s2, s3);
        }
Так же ещё совет в другую тему.
У Вас внутри формы объявлен класс Animal и производные от него классы. Зачем это сделано внутри формы? Это только путает код. Вынесите их объявление из формы.
0
01.11.2018, 10:25
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.11.2018, 10:25
Помогаю со студенческими работами здесь

Имя не существует в текущем контексте
using System; using System.Collections.Generic; using System.Linq; using System.Text; using...

Имя списка не существует в текущем контексте
Помогите пожалуйста. Есть три класса: cup, bolt и основной Program. В bolt создаётся List с именем...

Имя str не существует в текущем контексте
static void Main(string args) { int countCol= 0; string s = &quot;&quot;;...

CS0103 Имя table не существует в текущем контексте
Помогите устранить ошибку. Мой код: private void button1_Click(object sender, EventArgs e) ...


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

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