Вы объявляете переменную, указав ее тип и имя:
string[] array;
Вы инициализируете ее, задав ей начальное значение:
string[] array; // declare
array = mystring.Split(); // initialize
В c #, как и во многих других программахязыки, вы можете объединить оба действия в одну строку кода:
string[] array = mystring.Split();
Когда вы делаете это с локальными переменными, рассмотрите возможность использования var
вместо явного использования типа переменнойв объявлении, но только в тех случаях, когда тип переменной может быть легко выведен из правой части оператора присваивания:
var list = new List<int>(); // best.
var array = mystring.Split(); // still quite good.
var myVar = SomeClass.SomeMethodThatWeDoNotKnow(); // not so good...
Причина этого в том, что это очевидно для всех, кто читает кодэто list
из List<int>
, в то время как вы должны знать, какая строка. Split возвращается, чтобы узнать, что array
является массивом строк, и вам нужно навести курсор мыши на ключевое слово var
, чтобы узнать, какой типis myVar
.
При объявлении полей (имеется в виду - переменные уровня класса) они автоматически инициализируются их значением по умолчанию - null
для ссылкитипы типов, 0
для чисел и т. д.Однако это правило значения по умолчанию не применяется к локальным переменным (имеется в виду - переменные, объявленные внутри метода) или к аргументам метода. Вы должны явно инициализировать их, прежде чем сможете их использовать, иначе вы получите ошибку компиляции:
int a;
Console.Write(a);
приведет к ошибке компиляции:
Использование неназначенной локальной переменной 'a'
Всякий раз, когда вы используете метод, который возвращает что-то (то есть, этоне void
), вы можете использовать любой метод, возвращаемый напрямую, без установки результата в переменную:
if(myString.Split()[0] == someSubString) // use a value from the array
{ /* do some stuff here */ }
var result = SomeClass.Method().ToString(); // use ToString on the return value of Method
или просто игнорировать возвращаемое значение, если вы неэто не нужно:
// Just an example, don't do that with TryParse!
int i;
int.TryParse(s, out i); // if fails, i will be initialized to it's default value - 0
// do some other stuff