Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/16: Рейтинг темы: голосов - 16, средняя оценка - 4.94
0 / 0 / 0
Регистрация: 30.03.2009
Сообщений: 5

Инициализация переменной значением из другого класса

30.03.2009, 17:30. Показов 3139. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, люди хорошие. Подскажите, пожалуйста, как можно инициализировать переменную одного класса значением переменной из другого?
Моя маленькая программа должна будет определять координаты объекта, на основе введенных данных от пользователя.
Есть два класса Calculations и класс Nastroyka : Form
Пример пишу только для инициализации одной переменной value_Mhz частоты колебания.
Весь код программы не пишу, только ту часть, которая касается моего вопроса.
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
public partial class Nastroyka : Form
    {
 
        //---Переменные фомы Nastroyka-----------------
       public string value_Mhz;
      // public string value_Length;
      // public string value_Heigh;
      // public string value_Vilocity;
        //---------------------------------------------
 
 
        public Nastroyka()
        {
            InitializeComponent();
        }
 
        private void label1_Click(object sender, EventArgs e)
        {
           
        }
 
private void Save_button_Click(object sender, EventArgs e)
        {
            value_Mhz = Mhz_textBox.Text.ToString();
            double value_txt_1 = System.Convert.ToDouble(value_Mhz);
            Calculations p = new Calculations();
             p.GetLink(value_txt_1);
           // value_Length = Length_textBox.Text.ToString();
           // double value_txt_2 = System.Convert.ToDouble(value_Length);
           // value_Heigh = Heigh_textBox.Text.ToString();
           // double value_txt_3 = System.Convert.ToDouble(value_Heigh);
           // value_Vilocity = Vilocity_textBox.Text.ToString();
           // double value_txt_4 = System.Convert.ToDouble(value_Vilocity);
        }
 
 
 
class Calculations
    { 
        
        double Heigh, Length;                  // Выстота и длина
        double t0, v0;                         // t0 время колебания, v0 скорость распространения волны
        double x, y;                           // координаты x, y
        public double F;                       // частота колебаний
        object link;
 
        // получение переменной из класса Nastroyka
        public void GetLink(object link)
        {
            this.link = link;
           
        }
 
       public void Coefficient_Initialize ()
       {
 
           //Nastroyka p = new Nastroyka();
           F = link;
//           Length = p.Ret_Val(2); Это я пробывал использовать конструкцию switch (n) 
//           Heigh = p.Ret_Val(3);  break но таким способом у меня не получилось
//           v0 = p.Ret_Val(4);     функцию Ret_Val пробывал и типа void делать и double
                        все равно не работает.
           //--------------------------------------------------------------------------
 
 
           t0 = 1/F;                     //период колебаний 50 МГ       
           
       }
Последний способ, который я пробовал, при компиляции выдает ошибку:
Error 3 Cannot implicitly convert type 'object' to 'double'. An explicit conversion exists (are you missing a cast?)

Подскажите, как правильно инициализировать переменные значениями из других классов? С нетерпение жду ответа.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.03.2009, 17:30
Ответы с готовыми решениями:

Обращение к переменной одного класса из другого
есть 2 класса Первый public partial class Login_form : Form { public int paramettr_avt; public...

Как получить значение переменной из другого класса?
Вопрос достаточно простой на первый взгляд, но я чет никак не могу сообразить как его решить:( Заключается в следующем: есть класс...

Как обратится к переменной из другого класса, не создавая его экземпляр?
Добрый день. Подскажите, как обратится к переменной из другого класса, не создавая его экземпляр?

5
13 / 13 / 5
Регистрация: 15.03.2009
Сообщений: 55
30.03.2009, 21:34
C#
1
F = (double)link;
1
0 / 0 / 0
Регистрация: 30.03.2009
Сообщений: 5
30.03.2009, 23:04  [ТС]
Спасибо, ошибка при компиляции не возникает. Но переменная F видна в пределах функции public void GetLink(object link) {} она получается локальная. Мне необходимо чтобы она была видна в пределах класса. В вычислениях в дальнейшем она будет использоваться как константа. Как это правильно сделать?

Добавлено через 31 минуту 38 секунд
Я хотел сначала проинициализировать переменные при помощи оператора switch (n), но у меня ничего не получилось. Подскажите в чем ошибка? Вот как я это хотел осуществить:

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
class Calculations
    {
           double Heigh, Length;                  // Выстота и длина
           double t0, v0;           // t0 время колебания, v0 скорость распространения волны
           public double F;                       // частота колебаний
    public void Coefficient_Initialize ()
          {
 
                Nastroyka p = new Nastroyka();
                F = p.Ret_Val(1);;
                Length = p.Ret_Val(4);
                Heigh = p.Ret_Val(3);
                v0 = p.Ret_Val(4);
           }
      }
----------------------------------------------------------------------------------------
public partial class Nastroyka : Form
    {
 
        //---Переменные фомы Nastroyka-----------------
       public string value_Mhz;
       public string value_Length;
       public string value_Heigh;
       public string value_Vilocity;
        //---------------------------------------------
private void Save_button_Click(object sender, EventArgs e)
        {
            value_Mhz = Mhz_textBox.Text.ToString();
            value_Length = Length_textBox.Text.ToString();
            value_Heigh = Heigh_textBox.Text.ToString();
            value_Vilocity = Vilocity_textBox.Text.ToString();
            Calculations s = new Calculations();
            s.Coefficient_Initialize();
            
           
        }
 
        public double Ret_Val(int n)
        {
            switch (n)
            {
                case 1:
  
                   double value_txt_1 = System.Convert.ToDouble(value_Mhz);
                   return value_txt_1;
                   //break;
 
                case 2:
                    
                    double value_txt_2 = System.Convert.ToDouble(value_Length);
                    return value_txt_2;
                    //break;
 
                case 3:
                    
                    double value_txt_3 = System.Convert.ToDouble(value_Heigh);
                    return value_txt_3;
                    //break;
 
                case 4:
                    
                    double value_txt_4 = System.Convert.ToDouble(value_Vilocity);
                    return value_txt_4;
                    //break;
            }
           return 0; 
        }
тип функции менял с public double Ret_Val(int n) на public void Ret_Val(int n), не получается. Может оператор switch не применим в данном случае? Как можно в этом случае применить оператор switch? Или же для поставленной цели нужно использовать только способ указанный в первом моем вопросе?
0
13 / 13 / 5
Регистрация: 15.03.2009
Сообщений: 55
30.03.2009, 23:25
C#
1
//break;
break; в каждом блоке должен быть обязательно - его нельзя каменьтить
А чего нельзя напрямую прочитать поля?
C#
1
2
3
4
public string value_Mhz;
public string value_Length;
public string value_Heigh;
public string value_Vilocity;
темболее они у тебя все паблик
C#
1
F = double.Parse(p.value_Mhz);
и т.д.
1
1923 / 428 / 41
Регистрация: 12.07.2007
Сообщений: 2,062
31.03.2009, 04:57
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
private void Save_button_Click(object sender, EventArgs e)
{
    double mhz;
    if(double.TryParse(Mhz_textBox.Text,out mhz))
    {
        Calculations p1 = new Calculations(mhz);
        //или так
        Calculations p2 = new Calculations();
        p2.F=mhz;
    }else{
    //ошибка конвертирования строки
    }
}
 
public class Calculations
{
    private double f;
 
    public Calculations()
    {
    }
    
    public Calculations(double f)
    {
        this.f=f;
    }
 
    public double F
    {
        get{return f;}
        set{f=value;}
    }
}
1
0 / 0 / 0
Регистрация: 30.03.2009
Сообщений: 5
01.04.2009, 00:38  [ТС]
Спасибо Hort и тебе Green спасибо. Завтра C# замучаю, попробую и так и так. Я думаю вопросы еще у меня возникнут, надеюсь что не оставите меня.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.04.2009, 00:38
Помогаю со студенческими работами здесь

Делегаты с возвращаемым значением (одним) от метода из другого класса
class Iz1 { int i = 0; public double SN; public double Sn() { if (i < 1000) ...

Вызов переменной с другого класса
Запутался, в вызове переменной из другого класса , Как из класса Predmet, вызвать переменные Predmet1, Predmet2, Predmet3 в методе Rating...

Вызов переменной из другого класса
class A{ public int size = 4; } class B{ //Здесь я хочу использовать переменную с класса A } Чтобы использовать переменную с...

Чтение переменной из другого класса
Привет. Как сделать чтение переменной из другого класса, именно в тот момент, когда в том классе её значение изменяется?

Использование переменной другого класса
public class one { string lab = "123"; } public class two { public static void go() { ...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru