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

Структуры. get{} и set{}

06.02.2017, 20:26. Просмотров 650. Ответов 2
Метки нет (Все метки)

Дан радиус круга. Надо вывести диаметр, площадь и длину круга. Написал вот так:
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
        struct CircleParameters
        {
            private double radius;
            private double diameter;
            private double square;
            private double circleLength;
 
            public double Radius
            {
                get
                {
                    return radius;
                }
                set
                {
                    radius = value;
                }
            }
            public double Diameter
            {
                get
                {
                    return diameter;
                }
                set
                {
                    diameter = value * 2;
                }
            }
            public double Square
            {
                get
                {
                    return square;
                }
                set
                {
                    square = Math.PI * Math.Pow(value, 2);
                }
            }
            public double CircleLength
            {
                get
                {
                    return circleLength;
                }
                set
                {
                    circleLength = Math.PI * (value * 2);
                }
            }
        }
 
        static void Main(string[] args)
        {
            double radius = double.Parse(Console.ReadLine());
            CircleParameters parameters = new CircleParameters();
            parameters.Radius = radius;
            parameters.Diameter = parameters.Radius;
            parameters.Square = parameters.Radius;
            parameters.CircleLength = parameters.Radius;
            Console.WriteLine(parameters.Diameter);
            Console.WriteLine(parameters.Square);
            Console.WriteLine(parameters.CircleLength);
        }
Мне не нравиться эта часть кода:
C#
1
2
3
4
5
6
7
            parameters.Radius = radius;
            parameters.Diameter = parameters.Radius;
            parameters.Square = parameters.Radius;
            parameters.CircleLength = parameters.Radius;
            Console.WriteLine(parameters.Diameter);
            Console.WriteLine(parameters.Square);
            Console.WriteLine(parameters.CircleLength);
Я сначала ввожу значение для Radius, потом приравниваю это значение к параметрам круга (Diameter, Square, CircleLength), а потом вывожу. Можно ли упростить эту часть кода.

Добавлено через 12 минут
Желательно, чтобы в программе использовались get и set.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.02.2017, 20:26
Ответы с готовыми решениями:

Чем отличается private set от set?
Чем отличается private set от set? Зачем это вообще используется?

Запись структуры в файл - Как сделать так, чтобы в файл записывались только данные структуры?
Здравствуйте! using System.Runtime.Serialization.Formatters.Binary; ...

Get и set
Всем привет! Поясните пожалуйста чем такая функция: public float Scale { ...

get set и ref
допустим есть класс . Как учили - закрытые члены - доступ через get set . (сам...

Свойства get и set
Можно ли изменить тип возвращаемого значения через свойства? Или же свойства не...

2
IamRain
1376 / 1230 / 387
Регистрация: 02.08.2011
Сообщений: 3,628
06.02.2017, 20:42 2
Диаметр, площадь и длина - величины вычисляются на основе радиуса. Поэтому им сеттеры не нужны (публичные).
Создайте один единственный конструктор в структуре, который принимает радиус на вход и там же его валидирует.
И вычисляйте остальные параметры на основе радиуса либо в конструкторе (радиус в таком случае также может не иметь public сеттера), либо динамически уже в самих свойствах.
1
crackos
45 / 37 / 26
Регистрация: 11.08.2016
Сообщений: 139
Завершенные тесты: 2
06.02.2017, 21:04 3
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
   struct CircleParameters
        {
            private double radius;
            private double diameter;
            private double square;
            private double circleLength;
            
            public double Radius
            {
                get
                {
                    return radius;
                }
                set
                {
                    radius = value;
                }
            }
            public double Diameter
            {
                get
                {
                    return diameter;
                }
                set
                {
                    diameter = value * 2;
                }
            }
            public double Square
            {
                get
                {
                    return square;
                }
                set
                {
                    square = Math.PI * Math.Pow(value, 2);
                }
            }
            public double CircleLength
            {
                get
                {
                    return circleLength;
                }
                set
                {
                    circleLength = Math.PI * (value * 2);
                }
            }
            public CircleParameters(double Radius, double Diameter, double Square, double CircleLength) : this() {
                this.Radius = Radius;
                this.Diameter = Diameter;
                this.Square = Square;
                this.CircleLength = CircleLength;
            }
 
        }
 
        public static void Main(string[] args)
        {
            double radius = double.Parse(Console.ReadLine());
            CircleParameters parameters = new CircleParameters(radius, radius, radius, radius);
            Console.WriteLine(parameters.Diameter+"\n"+parameters.Square+"\n"+parameters.CircleLength);
        }
P.S. выше сказали правильнее
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.02.2017, 21:04

Функция get set
Ребят, помогите разобраться. Создаю класс с полем protected,потом через функцию...

Свойства get set
Доброй ночи. public class Date { private int month = 7; ...

Ошибка с get set
Помогите решить беду class Delphi { private ArrayList list =...


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

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

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