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

Не передается значение переменной одного класса в другой

22.05.2013, 06:28. Просмотров 915. Ответов 8
Метки нет (Все метки)

Помогите пожалуйста
ввожу вес груза 7 а он выводит тариф=10(а надо 13)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
class Registracia
{
public void DANO()
{
Console.Write(" Имя клиента:");
string a = Console.ReadLine();
Console.Write(" Фамилия клиента:");
string b = Console.ReadLine();
Console.Write(" Паспортные данные:");
int c = int.Parse(Console.ReadLine());
}
public void Sakas()
{
Console.Write("Вес перевозимого груза:");
int d = int.Parse(Console.ReadLine());
Console.Write("Растояние:");
int e = int.Parse(Console.ReadLine());
}
}
class Tarif
{
int d=0;
int tarif;
public void SAD()
{
if (d < 5) { tarif = 10; }
else if (d > 5 && d<15) { tarif=13; }
else if(d > 15 && d < 50) { tarif = 15; }
Console.WriteLine("За 1 км тарифная ставка составляет: {0}",tarif);
}
}
class Program
{
static void Main(string[] args)
{
Registracia b = new Registracia();
b.DANO();
b.Sakas();
Tarif s = new Tarif();
s.SAD();
Console.ReadLine();
}
}
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.05.2013, 06:28
Ответы с готовыми решениями:

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

Передать значение из одного класса в другой
есть 2 класса public partial class MainPage : UserControl { void runer() ...

Передать значение из одного класса в другой
помогите определить значение Есть код using System; using System.Collections.Generic;...

Значение переменной из одного метода в другой
Привет ребята! Я создал переменную в Классе и использую в методе . Как можно ее значение из метода...

Передать данные одного обьекта класса в другой обьект на другой форме
Здравствуйте прочитал вот это http://www.cyberforum.ru/windows-forms/thread110436.html но так и...

8
Xp-Apache
32 / 18 / 10
Регистрация: 20.05.2013
Сообщений: 47
22.05.2013, 06:41 2
Всё дело в том, что вы не устанавливаете значение поля d объекта s класса Tarif. Для Вашего жуткого кода быстрое решение такое:

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
namespace ConsoleApplication1
{
    class Registracia
    {
        public void DANO()
        {
            Console.Write(" Имя клиента:");
            string a = Console.ReadLine();
            Console.Write(" Фамилия клиента:");
            string b = Console.ReadLine();
            Console.Write(" Паспортные данные:");
            int c = int.Parse(Console.ReadLine());
        }
 
        public void Sakas(Tarif tarif)
        {
            Console.Write("Вес перевозимого груза:");
            int d = int.Parse(Console.ReadLine());
 
            tarif.d = d;
 
            Console.Write("Растояние:");
            int e = int.Parse(Console.ReadLine());
        }
    }
 
    class Tarif
    {
        int d=0;
        int tarif;
 
        public void SAD()
        {
            if (d < 5) { tarif = 10; }
            else if (d > 5 && d<15) { tarif=13; }
            else if(d > 15 && d < 50) { tarif = 15; }
            Console.WriteLine("За 1 км тарифная ставка составляет: {0}",tarif);
        }
    }
 
    class Program
    {
        static void Main(string[] args)
        {
            Registracia b = new Registracia();
            b.DANO();
 
            var s = new Tarif();
 
            b.Sakas(s);
 
            s.SAD();
            Console.ReadLine();
        }
    }
}
0
dobby
0 / 0 / 0
Регистрация: 15.02.2012
Сообщений: 47
22.05.2013, 06:46  [ТС] 3
А не подскажете что за ошибка вылетает
"ConsoleApplication1.Tarif.d" недоступен из-за его уровня защиты
в строке
tarif.d = d;
0
Дмитрий3241
647 / 517 / 137
Регистрация: 07.07.2011
Сообщений: 1,232
22.05.2013, 06:59 4
Подскажу конечно, ошибка вроде вот такая: "ConsoleApplication1.Tarif.d" недоступен из-за его уровня защиты, а вот http://msdn.microsoft.com/ru-ru/library/wxh6fsc7.aspx тут информация по уровням защиты.
1
22.05.2013, 06:59
dobby
0 / 0 / 0
Регистрация: 15.02.2012
Сообщений: 47
22.05.2013, 07:47  [ТС] 5
ошибка была в том что к переменную d надо было объявить public
Всем большое спасибо!!!

Добавлено через 44 секунды
[QUOTE=Xp-Apache;4595119]Всё дело в том, что вы не устанавливаете значение поля d объекта s класса Tarif. Для Вашего жуткого кода быстрое решение такое:

У меня еще один вопрос
если я хочу вместо числа присвоить переменной tarif слово
что в этом случае делать?
0
Xp-Apache
32 / 18 / 10
Регистрация: 20.05.2013
Сообщений: 47
22.05.2013, 09:07 6
Цитата Сообщение от dobby Посмотреть сообщение
если я хочу вместо числа присвоить переменной tarif слово
Нужно объявлять его типа string
1
dobby
0 / 0 / 0
Регистрация: 15.02.2012
Сообщений: 47
22.05.2013, 09:13  [ТС] 7
пасибо

namespace ConsoleApplication1
{
class Registracia

public void Sakas(Tarif tarif,Summa )
{
Console.Write("Вес перевозимого груза:");
int d = int.Parse(Console.ReadLine());
tarif.d = d;
Console.Write("Растояние в км:");
int e = int.Parse(Console.ReadLine());
}
}

class Tarif
{
public int d = 0;
int tarif;
public void SAD()
{
if (d < 5) { tarif = 10; }
else if (d > 5 && d < 15) { tarif = 13; }
else if (d > 15 && d < 50) { tarif = 15; }
Console.WriteLine("За 1 км тарифная ставка составляет: {0}", tarif);
}
}

class Summa
{
цена= вес d * растояние e * tarif
}

class Program
{
static void Main(string[] args)
{
Registracia b = new Registracia();

var s = new Tarif();
b.Sakas(s);
s.SAD();

Console.ReadLine();
}
}
}
}

А как мне реализовать
class Summa
{
цена= вес d * растояние e * tarif
}
0
Xp-Apache
32 / 18 / 10
Регистрация: 20.05.2013
Сообщений: 47
22.05.2013, 10:24 8
Например так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class Summa
{
    // Вес
    private int _height
    // Расстояние
    private int _lenght
    // Тариф
    private Tarif _tarif
 
    public Summa(int height, int lenght, Tarif tarif)
    {
        _height = height;
        _lenght = lenght;
        _tarif = tarif;
    }
 
    public int Calculate()
    {
        return _height * _lenght * _tarif;
    }
}
Использовать в функции main можно так:
C#
1
2
3
4
5
...
var s = new Tarif();
var summa = new Summa(height, lenght, s);
Console.WriteLine("Цена: {0}", summa.Calculate);
...
1
Дмитрий3241
647 / 517 / 137
Регистрация: 07.07.2011
Сообщений: 1,232
22.05.2013, 11:48 9
dobby, сообщений у вас 40+, а теги не ставите.
Для того что бы код выглядел вот так:
C#
1
2
3
4
private void foo()
{
    /*MyCode*/
}
А не вот так:
private void foo()
{
/*MyCode*/
}

Нужно ставить теги форматирования.
Посмотреть как это можно сделать во вложениях.
2
Изображения
 
22.05.2013, 11:48
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.05.2013, 11:48

Как присвоить значение переменной, исходя из значения другой переменной?
Всем привет. Нужна помощь. Есть переменная, например &quot;month&quot; которая может принимать значения...

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

В структуре нужно из одного метода взять значение массива и перетащить в другой (другой метод)
struct matrix { public int sz; public void size() { ...


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

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

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