Что означает в си шарп
Перейти к содержимому

Что означает в си шарп

  • автор:

Что означают символы $, <>, в записи вывода строк?

Со знаком доллара — это интерполяция строк, которая появилась в C#6. $ указывает на то, что это самая строка будет той самой, куда можно подставить переменные напрямую, не заморачиваясь какой-нибудь конкатенацией или строкой составного формата (об этом ниже). То есть вместо записи:

Console.WriteLine("Имя: " + name + ", Возраст: " + age); 
Console.WriteLine($"Имя: Возраст: "); 

где name и age — переменные со значениями, которые объявлены где-то выше в коде.

Фигурные скобки внутри нужны, чтобы отделить простые строки от действительно имен переменных. Иначе компилятор не смог бы понять где name является просто частью строки, а где подставляемая переменная.

Там где написано , и т.д. — это cтрока составного формата, где вместо , и т.д. подставляются значения переменных, которые перечислены через запятую после это строки. Пример из доков:

string name = "Fred"; String.Format("Name = , dt = ", name, DateTime.Now); 

Здесь Name = и , hours = — фиксированный текст. Элементы форматирования — это «» c индексом 0, который соответствует объекту name , и «» с индексом 1, который соответствует объекту DateTime.Now .

Номер соответствует номеру переменной в перечислении name, DateTime.Now . То есть если расположить их так: DateTime.Now, name , то строка выше выведется так:

Name = 01.01.2017 10:10:00 , dt = Fred 
Name = Fred , dt = 01.01.2017 10:10:00 

Кроме того сами цифры в строке можно размещать в разные позиции, главное, чтобы они соответствовали номеру переменной в перечислении. Так, если написать

String.Format("Name =, dt mt24">
)" data-controller="se-share-sheet" data-se-share-sheet-title="Поделиться ссылкой на ответ" data-se-share-sheet-subtitle="" data-se-share-sheet-post-type="answer" data-se-share-sheet-social="facebook twitter " data-se-share-sheet-location="2" data-se-share-sheet-license-url="https%3a%2f%2fcreativecommons.org%2flicenses%2fby-sa%2f3.0%2f" data-se-share-sheet-license-name="CC BY-SA 3.0" data-s-popover-placement="bottom-start">Поделиться
)" title="">Улучшить ответ
)">изменён 11 дек 2017 в 10:50
Андрей NOP
28.7k4 золотых знака40 серебряных знаков80 бронзовых знаков
ответ дан 11 дек 2017 в 9:28
1
    3
    Только не "переменные", а "выражения" скорее
    – Андрей NOP
    11 дек 2017 в 10:51
Добавить комментарий|
7

Это интерполированные строки, эти записи обозначают места, где должны подставляться какие-то значения.

Знак доллара перед строкой указывает, что будет осуществляться интерполяция строк.

<> - плейсхолдеры, которые указывают места, в которые будет интерполироваться значение. Число внутри скобок обозначает порядковый номер аргумента. Вместо числа может быть также имя переменной.

Console.WriteLine("Имя: Возраст: ", Name, Age); // 0 - Name, 1 - Age

Также можно об интерполяции строк в c# почитать здесь

Что означает в си шарп

Отдельный набор операций представляет условные выражения. Такие операции возвращают логическое значение, то есть значение типа bool : true , если выражение истинно, и false , если выражение ложно. К подобным операциям относятся операции сравнения и логические операции.

Операции сравнения

В операциях сравнения сравниваются два операнда и возвращается значение типа bool - true , если выражение верно, и false , если выражение неверно.

    == Сравнивает два операнда на равенство. Если они равны, то операция возвращает true , если не равны, то возвращается false :

int a = 10; int b = 4; bool c = a == b; // false
int a = 10; int b = 4; bool c = a != b; // true bool d = a!=10; // false
int a = 10; int b = 4; bool c = a < b; // false
int a = 10; int b = 4; bool c = a > b; // true bool d = a > 25; // false
int a = 10; int b = 4; bool c = a 
int a = 10; int b = 4; bool c = a >= b; // true bool d = a >= 25; // false

Операции = имеют больший приоритет, чем == и !=.

Логические операции

Также в C# определены логические операторы, которые также возвращают значение типа bool . В качестве операндов они принимают значения типа bool . Как правило, применяются к отношениям и объединяют несколько операций сравнения.

    | Операция логического сложения или логическое ИЛИ. Возвращает true, если хотя бы один из операндов возвращает true.

bool x1 = (5 > 6) | (4 < 6); // 5 >6 - false, 4 < 6 - true, поэтому возвращается true bool x2 = (5 >6) | (4 > 6); // 5 > 6 - false, 4 > 6 - false, поэтому возвращается false
bool x1 = (5 > 6) & (4 < 6); // 5 >6 - false, 4 < 6 - true, поэтому возвращается false bool x2 = (5 < 6) & (4 < 6); // 5 < 6 - true, 4 < 6 - true, поэтому возвращается true
bool x1 = (5 > 6) || (4 < 6); // 5 >6 - false, 4 < 6 - true, поэтому возвращается true bool x2 = (5 >6) || (4 > 6); // 5 > 6 - false, 4 > 6 - false, поэтому возвращается false
bool x1 = (5 > 6) && (4 < 6); // 5 >6 - false, 4 < 6 - true, поэтому возвращается false bool x2 = (5 < 6) && (4 < 6); // 5 < 6 - true, 4 < 6 - true, поэтому возвращается true
bool a = true; bool b = !a; // false
bool x5 = (5 > 6) ^ (4 < 6); // 5 >6 - false, 4 < 6 - true, поэтому возвращается true bool x6 = (50 >6) ^ (4 / 2 < 3); // 50 >6 - true, 4/2 < 3 - true, поэтому возвращается false

Здесь у нас две пары операций | и || (а также & и && ) выполняют похожие действия, однако же они не равнозначны.

В выражении z=x|y; будут вычисляться оба значения - x и y.

В выражении же z=x||y; сначала будет вычисляться значение x, и если оно равно true , то вычисление значения y уже смысла не имеет, так как у нас в любом случае уже z будет равно true . Значение y будет вычисляться только в том случае, если x равно false

То же самое касается пары операций &/&& . В выражении z=x&y; будут вычисляться оба значения - x и y.

В выражении же z=x&&y; сначала будет вычисляться значение x, и если оно равно false , то вычисление значения y уже смысла не имеет, так как у нас в любом случае уже z будет равно false . Значение y будет вычисляться только в том случае, если x равно true

Поэтому операции || и && более удобны в вычислениях, так как позволяют сократить время на вычисление значения выражения, и тем самым повышают производительность. А операции | и & больше подходят для выполнения поразрядных операций над числами.

Операторы отношения и логические операторы

В операторе отношения термин «отношение» означает взаимосвязь, которая может существовать между двумя значениями (больше, равно, …), а термин «логический» в логическом операторе — взаимосвязь между логическими значениями «истина» и «ложь».

Поскольку операторы отношения дают истинные или ложные результаты, то они нередко применяются вместе с логическими операторами. Именно по этой причине они и рассматриваются совместно.

Операторы отношения
Оператор Значение
== Равно
!= Не равно
> Больше
Меньше
>= Больше или равно
Меньше или равно
Логические операторы
Оператор Значение
& И
| ИЛИ
^ Исключающее ИЛИ
&& Укороченное И
|| Укороченное ИЛИ
! НЕ

Результатом выполнения оператора отношения или логического оператора является логическое значение типа bool.

В целом, объекты можно сравнивать на равенство или неравенство, используя операторы отношения == и !=.

А операторы сравнения , = могут применяться только к тем типам данных, которые поддерживают отношение порядка. Следовательно, операторы отношения можно применять ко всем числовым типам данных.

Но значения типа bool могут сравниваться только на равенство или неравенство, поскольку истинные (true) и ложные (false) значения не упорядочиваются.

Например, сравнение true > false в C# не имеет смысла.

Рассмотрим пример программы, демонстрирующий применение операторов отношения и логических операторов:

 using System; namespaceConsoleApplication1 < classProgram < static void Main(string[] args) < short d =10, f =12; bool var1 = true, var2 = false; if (d < f) Console.WriteLine("d < f"); if (d f) Console.WriteLine("d > f"); // Сравниванием переменные var1 и var2 if (var1 & var2) Console.WriteLine("Данный текст не выведется"); if (!(var1 & var2)) Console.WriteLine("!(var1 & var2) = true"); if (var1 | var2) Console.WriteLine("var1 | var2 = true"); if (var1 ^ var2) Console.WriteLine("var1 ^ var2 = true"); Console.ReadLine(); > > > 

211

Логические операторы в C# выполняют наиболее распространенные логические операции.
Тем не менее существует ряд операций, выполняемых по правилам формальной логики. Эти логические операции могут быть построены с помощью логических операторов, поддерживаемых в C#.
Следовательно, в C# предусмотрен такой набор логических операторов, которого достаточно для построения практически любой логической операции, в том числе импликации.

Импликация — это двоичная операция, результатом которой является ложное значение только в том случае, если левый ее операнд имеет истинное значение, а правый — ложное. (Операция импликации отражает следующий принцип: истина не может подразумевать ложь).
Операция импликации может быть построена на основе комбинации логических операторов ! и | :
!p | q .

Укороченные логические операторы

В C# предусмотрены также специальные, укороченные, варианты логических операторов И и ИЛИ, предназначенные для получения более эффективного кода. Поясним это на следующих примерах логических операций.
Если первый операнд логической операции И имеет ложное значение (false), то ее результат будет иметь ложное значение независимо от значения второго операнда.
Если же первый операнд логической операции ИЛИ имеет истинное значение (true), то ее результат будет иметь истинное значение независимо от значения второго операнда.
Благодаря тому что значение второго операнда в этих операциях вычислять не нужно, экономится время и повышается эффективность кода.
Укороченная логическая операция И выполняется с помощью оператора &&, а укороченная логическая операция ИЛИ — с помощью оператора || .
Этим укороченным логическим операторам соответствуют обычные логические операторы & и | .
Единственное отличие укороченного логического оператора от обычного заключается в том, что второй его операнд вычисляется только по мере необходимости.
Укороченные логические операторы иногда оказываются более эффективными, чем их обычные аналоги.
Так зачем же нужны обычные логические операторы И и ИЛИ? Дело в том, что в некоторых случаях требуется вычислять оба операнда логической операции И либо ИЛИ из-за возникающих побочных эффектов.

 using System; namespace ConsoleApplication1 < class Program < static void Main(string[] args) < short d = 12, f = 0; // В данном случае используется укороченный оператор и // операции сравнения выполнится в нормальном потоке, // так как первое условие = false, и второе не проверяется if (f != 0 && (d % f) == 0) Console.WriteLine(" делится нацело на ", d, f); // В этом случае так же используется укороченный оператор, // но при этом возникнет исключительная ситуация, // т.к. первый оператор сравнения содержит деление на 0 if ((d % f) == 0 && f != 0) Console.WriteLine(" делится нацело на ", d, f); // При использовании целостного оператора в любом // случае возникнет исключительная ситуация  if (f != 0 & (d % f) == 0) Console.WriteLine(" делится нацело на ", d, f); //*** Практический пример использования операторов ***// // При использовании обычного оператора, в данной // конструкции i будет инкриминировать bool b = true; short i = 0;  if (b | (++i < 10)) Console.WriteLine("i равно ", i); // i=1! // При использовании укороченного оператора // значение i останется прежним i = 0; if (b || (++i < 10)) Console.WriteLine("i равно ", i);  // i = 0!  Console.ReadLine(); > > >  

Пример демонстрирует разницу между операторами «&&» и «&», а также между «|» и «||» .
Далее рассмотрим варианты оператора присваивания.

NEW: Наш Чат, в котором вы можете обсудить любые вопросы, идеи, поделиться опытом или связаться с администраторами.

что значит знак "%" в Си шарп?

10 % 10 = 0 (Десять делится на десять и нет не одного лишнего числа.)
10 % 9 = 1 (Десять на десять не делится, по-этому оно делится на 9, а один остается его переносят за знак равно)
40 % 2 = 0 (Тут тоже самое что в первом примере 40 делится на два без остатка, по-этому остаток равен нулю и он же переносится за знак равно)
50 % 4 = 2 (так как 50 не делится ровно на 4, берется ближайшее число, это 48 а оставшиеся 2 единицы деваем за знак равно)

Остальные ответы

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *