Curiosidades C# – O método Math.Clamp

Math.Clamp é um método que ajuda a manter um valor dentro de um range especifico de valores.

A definição da Microsoft é: Retorna o valor fixado ao intervalo inclusivo de min e max.

Isso quer dizer que se escolhermos um valor de mínimo (42) e um máximo de (4242), e usarmos o Math.Clamp para validar o um número, a saída será sempre um valore entre estes dois limites.

Exemplo:

using System;

namespace StaticMathOperations
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Console Math");
            int min = 42;
            int max = 4242;
            Console.WriteLine("With Math.Clamp");
            MathClamp(57, min, max);
            MathClamp(4243, min, max);
            MathClamp(12, min, max);
            MathClamp(70, min, max);
            MathClamp(-8, min, max);
            Console.WriteLine("\nWithout Math.Clamp");
            WithoutMathClamp(57, min, max);
            WithoutMathClamp(4243, min, max);
            WithoutMathClamp(12, min, max);
            WithoutMathClamp(70, min, max);
            WithoutMathClamp(-8, min, max);
        }

        public static void MathClamp(int testValue, int min, int max)
        {
            var result = Math.Clamp(testValue, min, max);
            Console.WriteLine($"Test Value: {testValue} - Exit Value: {result} - Bounderies: {min} and {max}");
        }

        public static void WithoutMathClamp(int testValue, int min, int max)
        {
            int result;
            if (testValue <= min)
            {
                result = min;
            }
            else if(testValue >= max)
            {
                result = max;
            }
            else
            {
                result = testValue;
            }
            Console.WriteLine($"Test Value: {testValue} - Exit Value: {result} - Bounderies: {min} and {max}");
        }
    }
}

A alternativa para o método Math.Clamp é uma série de validações que devem ser executadas nos valores. Esta validação foi demonstrada no método WithoutMathClamp() acima.

Qualquer dúvida ou dicas, entre em contato: leandrolt@gmail.com

Principais referências

– https://docs.microsoft.com/pt-br/dotnet/api/system.math.clamp?view=net-5.0

Leave a Reply

Your email address will not be published. Required fields are marked *