Console.Read();

Здравствуйте. Объясните пожалуйста.

int n;

n = Console.Read();

С клавиатуры вбиваю 5, а присваивается 53. Почему именно так?
С какой целью можно использовать Console.Read();?

Console.Read читает только 1 символ. Все входные данные в консоли - строка. Для считывания числа используйте такую конструкцию:

int n = Int32.TryParse(Console.ReadLine()); в этом случае программа попытается конвертировать всё, что пришло к типу Int

TryParse() возвращает bool. Переменную n нужно передавать вторым параметром в качестве выходного параметра.

Console.Read(); возвращает не символ, а его код, собственно для этой цели он и используется, код цифры 5 по юникоду 53 в десятичной, или 35 в шестнадцатеричной системе.

Если нужно из кода 53 получить 5, то можно например привести к char

int code = Console.Read();

Console.WriteLine(code);

Console.WriteLine((char)code);

Подскажите есть ли для Console.ReadLine(); гарячая клавиша? Например как для
Console.WriteLine(); cw tab tab

Такие горячие клавиши называются "сниппетами" (snippets), и по-умолчанию в Visual Studio нет сниппета, который бы отвечал за Console.Read().

Однако вы можете импортировать свои собственные сниппеты. Если сохраните следующий код как .snippet и импортируете его в Visual Studio - то потом сможете при нажатии cr tab tab вызывать функцию Console.Read().

Код:

<?xml version="1.0" encoding="utf-8" ?>
<CodeSnippets  xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
    <CodeSnippet Format="1.0.0">
        <Header>
            <Title>cr</Title>
            <Shortcut>cr</Shortcut>
            <Description>Code snippet for Console.ReadLine</Description>
            <Author>Whoever you want it to be</Author>
            <SnippetTypes>
                <SnippetType>Expansion</SnippetType>
            </SnippetTypes>
        </Header>
        <Snippet>
            <Declarations>
                <Literal Editable="false">
                    <ID>SystemConsole</ID>
                    <Function>SimpleTypeName(global::System.Console)</Function>
                </Literal>
            </Declarations>
            <Code Language="csharp"><![CDATA[$SystemConsole$.ReadLine();]]>
            </Code>
        </Snippet>
    </CodeSnippet>
</CodeSnippets>

Точнее как, данный код реализует сниппет Console.ReadLine(), но по сути то поменять там элементарно просто (просто везде где есть ReadLine убрать 4 последних буквы, изменив тем самым слово на просто Read)

по сути та же реализация сниппета Console.WriteLine(), только Read вместо Write