Изменение параметров собственного класса - C#

Узнай цену своей работы

Формулировка задачи:

Я создал собственный класс. В классе описываю свойства. Ниже код (код привел не весь что бы не захламлять).
public class my_hexagon
{
 
    public double H { get; set; }
    public double D { get; set; }
    public double d {  get; }
    public double R {  get;}
    public double angle_ZX   { get; set; }
    
    public my_point_double point_bottom_1   { get; }
 
    public my_hexagon() {  }
    public my_hexagon(double Height, double Diameter, my_point_double base_point, double ZX_angle = 0, my_point_double point_of_rotate = null)
    {
        H = Height;
        D = Diameter;
        R = Math.Round(Diameter / 2.0, 10);
        b = Math.Round(2.0 * R * Math.Sin(30.0 * Math.PI / 180.0), 10);
 
        angle_ZX = ZX_angle;
 
        point_bottom_1 = new my_point_double(-R + base_point.X, 0 + base_point.Y,  0 + base_point.Z);
 
        point_bottom_1 = point_bottom_1.rotate(ZX_angle, point_of_rotate);
 
    }
}
Далее я создаю этот объект
my_hexagon hexagon = new my_hexagon(Convert.ToDouble(dataGridView1[1, 0].Value), Convert.ToDouble(dataGridView1[0, 0].Value), point_of_displacement);
После работы с "hexagon", мне необходимо поменять его свойство "D" (или какое нибудь другое свойство). Меняю так:
hexagon.D = 50;
Но от свойства "D", зависят другие параметры. Как сделать, что бы пересчитывались остальные свойства зависящие от изменяемого параметра (R, b и так далее)?

Решение задачи: «Изменение параметров собственного класса»

textual
Листинг программы
public class my_hexagon
{
    public double H { get; set; } //автоматическими делайте только независимые свойства
    public double D { get; set; }
    //...
    public double R { get { return Math.Round(D / 2.0, 10); } } //у зависимых нужен только аксессор get
    //...
 
    public my_hexagon() { }
    public my_hexagon(double Height, double Diameter, my_point_double base_point, double ZX_angle = 0, my_point_double point_of_rotate = null)
    {
        H = Height; //в конструкторе инициализируйте только независимые
        D = Diameter;
        //...
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4 из 5
Похожие ответы