Почему условная конструкция if работает некоректно?

Не понимаю, в чем проблема, но при присваивании переменной х значения 20 (большее 10), выводится 0, хотя должно быть 10.

internal class Program
{
    static void Main(string[] args)
    {
        Point point = new Point();
        point.X = 20;
        Console.WriteLine(point.X);
    }
}


 internal class Point
{
    private int x;
    public int X
    {
        get { return x; }
        set 
        {             
            if (value > 10)
            {
                value = 10;
                return;
            }
            if (value < 0) { 
                value = 0;
                return;
            }
            
            x = value; 
        }
    }
}

Ответы (1 шт):

Автор решения: CrazyElf

Присваивайте значение переменной x, а не value, раз уж вы выходите сразу по return и до строки x = value; в конце кода ход не доходит:

            if (value > 10)
            {
                x = 10;
                return;
            }

Либо сделайте так, чтобы это присваивание всегда срабатывало:

            if (value > 10)
            {
                value = 10;
            }
            else if (value < 0) { 
                value = 0;
            }
            x = value; 
→ Ссылка