© 2026 Hedgehog Software, LLC

TwitterGitHubDiscord
More
CommunitiesDocsAboutTermsPrivacy
Search
Star
Setup for Free
C#C
C#•3y ago•
12 replies
SWEETPONY

How to optimize this?

I have following:
using System;

namespace SquareCalculus
{
    internal class FigureTriangle : IFigure
    {
        private readonly double _sideA;
        private readonly double _sideB;
        private readonly double _sideC;

        public FigureTriangle(
            double sideA,
            double sideB,
            double sideC)
        {
            ArgumentOutOfRangeException.ThrowIfNegativeOrZero(sideA, nameof(sideA));
            ArgumentOutOfRangeException.ThrowIfNegativeOrZero(sideB, nameof(sideB));
            ArgumentOutOfRangeException.ThrowIfNegativeOrZero(sideC, nameof(sideC));

            _sideA = sideA;
            _sideB = sideB;
            _sideC = sideC;
        }

        public double CalculateSquare()
        {
            var perimetr = (_sideA + _sideB + _sideC) / 2;

            var square = Math.Sqrt(perimetr
                * (perimetr - _sideA)
                * (perimetr - _sideB)
                * (perimetr - _sideC));

            return square;
        }

        public bool IsRightTriangle()
        {
            var sides = new double[] { _sideA, _sideB, _sideC };

            Array.Sort(sides);

            return Math.Pow(sides[2], 2) == Math.Pow(sides[0], 2) + Math.Pow(sides[1], 2);
        }
    }
}
using System;

namespace SquareCalculus
{
    internal class FigureTriangle : IFigure
    {
        private readonly double _sideA;
        private readonly double _sideB;
        private readonly double _sideC;

        public FigureTriangle(
            double sideA,
            double sideB,
            double sideC)
        {
            ArgumentOutOfRangeException.ThrowIfNegativeOrZero(sideA, nameof(sideA));
            ArgumentOutOfRangeException.ThrowIfNegativeOrZero(sideB, nameof(sideB));
            ArgumentOutOfRangeException.ThrowIfNegativeOrZero(sideC, nameof(sideC));

            _sideA = sideA;
            _sideB = sideB;
            _sideC = sideC;
        }

        public double CalculateSquare()
        {
            var perimetr = (_sideA + _sideB + _sideC) / 2;

            var square = Math.Sqrt(perimetr
                * (perimetr - _sideA)
                * (perimetr - _sideB)
                * (perimetr - _sideC));

            return square;
        }

        public bool IsRightTriangle()
        {
            var sides = new double[] { _sideA, _sideB, _sideC };

            Array.Sort(sides);

            return Math.Pow(sides[2], 2) == Math.Pow(sides[0], 2) + Math.Pow(sides[1], 2);
        }
    }
}


Imagine I will call
IsRightTriangle
IsRightTriangle
twice with the same parameters. It is not optimal to do sorting etc again again.. So how can I fix it?
C# banner
C#Join
We are a programming server aimed at coders discussing everything related to C# (CSharp) and .NET.
61,871Members
Resources

Similar Threads

Was this page helpful?
Recent Announcements

Similar Threads

✅ How to optimize this code?
C#CC# / help
16mo ago
✅ How to optimize this method?
C#CC# / help
2y ago
❔ Need help to optimize this simulation
C#CC# / help
3y ago