This article has been localized into Russian by the community.
Переменные
Переменные сравнимы с хранилищем и являются основой для любого программиста. В C#, переменные задаются так:
<тип данных><имя>;
к примеру вот так:
string name;
Это наиболее общий вид, но переменной еще не присвоено значение. Вы можете присвоить его позже, или непосредственно во время определения, к примеру вот так:
<data type> <name> = <value>;
Если эта переменная не является локальной для текущего метода (не является членом класса), видимость переменной можно назначить :
<область видимости><тип данных><имя переменной>=<значение>
пример полностью:
private string name = "John Doe";
Область видимости связана с классами, поэтому вы можете найти более подробное объяснение в главе о классах. Давайте сконцентрируемся на переменных и примерах, где мы и будем их использовать:
using System;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string firstName = "John";
string lastName = "Doe";
Console.WriteLine("Name: " + firstName + " " + lastName);
Console.WriteLine("Please enter a new first name:");
firstName = Console.ReadLine();
Console.WriteLine("New name: " + firstName + " " + lastName);
Console.ReadLine();
}
}
}
Хорошо, большинство из этого уже было объяснено, поэтому мы перейдем прямо к интересной части. Во первых, мы определили пару переменных строкового типа. Строка, как вы можете видеть, содержит текст, который мы задали напрямую. Следующее, мы вывели строку текста, в которой мы использовали 2 переменные, в консоль. Строка получена с использованием символа + для соединения различных частей.
Следующее, мы просим пользователя ввести новое имя, и после этого используем метод ReadLine() для того, чтобы прочитать ввод пользователя с консоли в переменную firstName. Как только пользователь нажимает клавишу Enter, новое имя присваивается переменной, и в следующей строке мы выводим имя снова, чтобы показать изменения. Мы только что использовали нашу первую переменную и самое важное свойство переменной: Возможность изменения значения во время исполнения.
Другой интересный пример - вычисления. Вот пример основанный по большей части на только что использованном нами коде:
int number1, number2;
Console.WriteLine("Please enter a number:");
number1 = int.Parse(Console.ReadLine());
Console.WriteLine("Thank you. One more:");
number2 = int.Parse(Console.ReadLine());
Console.WriteLine("Adding the two numbers: " + (number1 + number2));
Console.ReadLine();
Вставьте код в наш метод Main, и проверьте его. Единственный новый "трюк", использованный здесь - это метод int.Parse(). Он просто читает строку и преобразовывает её в число. Как вы можете видеть, программа не проверяет данные введенные пользователем, и если вы введете что-то, что не является числом, то возникнет исключение. Обо все этом далее.
Переменные & Область видимости переменных
Пока мы использовали только локальные переменные, определяемые и используемые внутри метода. В C# переменная, определенная внутри метода, не может быть использована за пределами этого метода - поэтому ее называют локальной. Если вы знаете другие языки программирования, то знаете о глобальных переменных, доступ к которым можно получить многих мест программы, но в C# концепция глобальных переменных не применяется. Вместо этого вы можете определить в классе поле, к которому можно получить доступ из всех методов этого класса. Позвольте продемонстрировать это на примере:
using System;
namespace VariableScope
{
class Program
{
private static string helloClass = "Hello, class!";
static void Main(string[] args)
{
string helloLocal = "Hello, local!";
Console.WriteLine(helloLocal);
Console.WriteLine(Program.helloClass);
DoStuff();
}
static void DoStuff()
{
Console.WriteLine("A message from DoStuff: " + Program.helloClass);
}
}
}
Заметьте, член класса helloClass определен в области видимости класса, а не внутри метода - это позволяет нам получить доступ к нему из обоих методов: Main() и DoStuff(). Это не сработает в случае переменной helloLocal, которая определена внутри метода Main() и поэтому может использоваться только внутри самого метода.
Концепция разграничения переменных называется scoping и предотвращает код вашей программы от избыточного количества переменных, которые могут быть изменены из слишком большого количества мест. Другая технология, полезная в этом случае, называется member visibility (в данном случае, представлена примером private), которую мы обсудим в главе о классах.
Резюме
Переменные позволяют нам хранить данные разных типов, например, текстовые строки strings, числа numbers или пользовательские objects. Существуют локальные переменные, которые определены и доступны внутри методов, и такие (поля класса) доступ к которым может быть получен из всех методов класса и за его пределами, если это допускает visibility.