Я полный новичок в C# Помогите понять почему не работает мой код

using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Введи год твоего рождения:");
            string bornFalse = Console.ReadLine();
            short born = Convert.ToInt16(bornFalse);
            short NowDate = 2020;
            short ready = NowDate - born;
            Console.WriteLine("Твой возраст:" + ready);

        }
    }
} 

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

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

Тип int (он же System.Int32) - наименьший знаковый тип, для которого определены арифметические операции. Таким образом, вычитая short из short они неявно преобразуются к int, вычитаются и возвращается результат тоже типа int. Обратное преобразование (из int в short) может вызывать потерю значащих разрядов, поэтому возможно только явное преобразование:

short ready = (short) (NowDate - born);

Но лучше просто используйте везде int (для увеличения скорости доступа к памяти используется выравнивание, поэтому "сэкономленные" байты все равно окажутся недоступны)

→ Ссылка