Форум программистов, компьютерный форум, киберфорум
Наши страницы

C# для начинающих

Войти
Регистрация
Восстановить пароль
 
AndreyVoronin52
0 / 0 / 0
Регистрация: 29.10.2016
Сообщений: 39
#1

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

06.02.2017, 20:26. Просмотров 349. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Структуры. get{} и set{} (C#):

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

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

Get и set - C#
Всем привет! Поясните пожалуйста чем такая функция: public float Scale { get { return Screen.Width / Viewport.Width; } } ...

Конструкторы, Set, Get - C#
В общем, я немного знаком со структурным программированием и старым добрым Паскалем. Сейчас начал учить ООП вообще и C# в частности....

.NET 4.x Свойства get set - C#
Доброй ночи. public class Date { private int month = 7; public int Month { get { ...

get set и ref - C#
допустим есть класс . Как учили - закрытые члены - доступ через get set . (сам я лично не вижу в этом особого смысла, но вот попробовал) ...

2
IamRain
1119 / 1035 / 260
Регистрация: 02.08.2011
Сообщений: 3,113
06.02.2017, 20:42 #2
Диаметр, площадь и длина - величины вычисляются на основе радиуса. Поэтому им сеттеры не нужны (публичные).
Создайте один единственный конструктор в структуре, который принимает радиус на вход и там же его валидирует.
И вычисляйте остальные параметры на основе радиуса либо в конструкторе (радиус в таком случае также может не иметь public сеттера), либо динамически уже в самих свойствах.
1
crackos
45 / 37 / 17
Регистрация: 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 - C#
Ребят, помогите разобраться. Создаю класс с полем protected,потом через функцию get-set пытаюсь получить доступ к полю, однако у меня...

свойства get;set; - C#
Доброе время суток, решил на досуге почитать тут про лямбда выражения и с ужасом для себя открыл, что код public class MyClass { ...

Свойства get и set - C#
Можно ли изменить тип возвращаемого значения через свойства? Или же свойства не приспособлены к этому..:read: Допустим, у меня есть поле...

Ошибка с get set - C#
Помогите решить беду class Delphi { private ArrayList list = new ArrayList(); private void...


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

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

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