# Console.Read();

**URL:** <https://forum.itvdn.com/t/console-read/1359>\
**Category:** C# Домашние задания\
**Created:** [25.12.2016 16:53:36 UTC](https://forum.itvdn.com/t/console-read/1359 "2016-12-25T16:53:36Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![myzikant03](https://forum.itvdn.com/letter_avatar_proxy/v4/letter/m/c37758/32.png) [@myzikant03](https://forum.itvdn.com/u/myzikant03)\
**Post date:** [25.12.2016 16:53:36 UTC](https://forum.itvdn.com/t/console-read/1359/1 "2016-12-25T16:53:36Z")

</div>

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

int n;

n = Console.Read();

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

---

<div class="post-metadata">

**Author:** ![dev.potapy4](https://forum.itvdn.com/letter_avatar_proxy/v4/letter/d/94ad74/32.png) [@dev.potapy4](https://forum.itvdn.com/u/dev.potapy4)\
**Post date:** [27.12.2016 14:21:12 UTC](https://forum.itvdn.com/t/console-read/1359/2 "2016-12-27T14:21:12Z")

</div>

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

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

---

<div class="post-metadata">

**Author:** ![ValeriyGourov](https://forum.itvdn.com/letter_avatar_proxy/v4/letter/v/eada6e/32.png) [@ValeriyGourov](https://forum.itvdn.com/u/ValeriyGourov)\
**Post date:** [27.12.2016 18:07:33 UTC](https://forum.itvdn.com/t/console-read/1359/3 "2016-12-27T18:07:33Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![vr.19860507](https://forum.itvdn.com/letter_avatar_proxy/v4/letter/v/f14d63/32.png) [@vr.19860507](https://forum.itvdn.com/u/vr.19860507)\
**Post date:** [27.12.2016 20:28:20 UTC](https://forum.itvdn.com/t/console-read/1359/4 "2016-12-27T20:28:20Z")

</div>

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

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

int code = Console.Read();

Console.WriteLine(code);

Console.WriteLine((char)code);

---

<div class="post-metadata">

**Author:** ![solena470](https://forum.itvdn.com/letter_avatar_proxy/v4/letter/s/6bbea6/32.png) [@solena470](https://forum.itvdn.com/u/solena470)\
**Post date:** [25.10.2018 07:25:57 UTC](https://forum.itvdn.com/t/console-read/1359/5 "2018-10-25T07:25:57Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![glebgariev](https://forum.itvdn.com/letter_avatar_proxy/v4/letter/g/ea666f/32.png) [@glebgariev](https://forum.itvdn.com/u/glebgariev)\
**Post date:** [25.10.2018 10:14:47 UTC](https://forum.itvdn.com/t/console-read/1359/6 "2018-10-25T10:14:47Z")

</div>

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

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

Код:

---

<div class="post-metadata">

**Author:** ![glebgariev](https://forum.itvdn.com/letter_avatar_proxy/v4/letter/g/ea666f/32.png) [@glebgariev](https://forum.itvdn.com/u/glebgariev)\
**Post date:** [25.10.2018 10:17:28 UTC](https://forum.itvdn.com/t/console-read/1359/7 "2018-10-25T10:17:28Z")

</div>

```
<?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>
```

---

<div class="post-metadata">

**Author:** ![glebgariev](https://forum.itvdn.com/letter_avatar_proxy/v4/letter/g/ea666f/32.png) [@glebgariev](https://forum.itvdn.com/u/glebgariev)\
**Post date:** [25.10.2018 10:19:51 UTC](https://forum.itvdn.com/t/console-read/1359/8 "2018-10-25T10:19:51Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![Nikit\_OS69](https://forum.itvdn.com/letter_avatar_proxy/v4/letter/n/eb9ed0/32.png) [@Nikit\_OS69](https://forum.itvdn.com/u/Nikit_OS69)\
**Post date:** [25.10.2018 10:36:34 UTC](https://forum.itvdn.com/t/console-read/1359/9 "2018-10-25T10:36:34Z")

</div>

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