Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
KrusX
0 / 0 / 0
Регистрация: 31.10.2018
Сообщений: 8
1

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

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

Здравствуйте, я новичок. Возникла проблема в 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.11.2018, 03:09
Ответы с готовыми решениями:

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

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

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

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

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

2
Someone007
3035 / 2259 / 1011
Регистрация: 09.05.2015
Сообщений: 5,596
Завершенные тесты: 1
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
Элд Хасп
Модератор
2345 / 1650 / 555
Регистрация: 21.04.2018
Сообщений: 5,509
Записей в блоге: 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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.11.2018, 10:25

Имя не существует в текущем контексте + использование локальной переменной, которой не присвоено значение
Всем привет. Сделал задачу, но при запуске выдаёт 3 ошибки: Имя &quot;i&quot; не существует в текущем...

Ошибка CS0103 Имя "PowerManagementResource" не существует в текущем контексте
Код сюда не помещается. (86 тысяч с лишним символов.) Вот: http://pastebin.com/ERWVnZ9F Что...

Ошибка CS0103 Имя "a" не существует в текущем контексте
using System; using System.Collections.Generic; using System.Linq; using System.Text; using...


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

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

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