C# → Типы данных

Типы по значению и типы по ссылке. Тип struct в C# является типом по значению.

C# имеет 15 предопределенных типов (13 по значению и 2 (string и object) по ссылке).

В C# тип object является исходным типом-предком, от которого берут начало все внутренние и все определенные пользователем типы. Ссылку object можно использовать для привязки к любому объекту любого частного подтипа.

Тип string является типом по ссылке (размещается в куче). Когда одна строковая переменная присваивается другой строковой переменной, в результате получается две ссылки на одну и ту же строку в памяти. Однако если впоследствии будут сделаны изменения в одной из этих строк, это создаст совершенно новый объект string, в то время как другая строка останется неизменной.

Для ввода пути:

string filepath = “C:\\Temp\\First.cs”

Или можно воспользоваться предварительным символом «@»:

string filepath = @“C:\Temp\First.cs”;

Это позволяет включить в строковые литералы даже переводные строки:

string s = @"c:\temp\a.cs";

Когда одна строковая переменная присваивается другой строковой переменной, в результате получается две ссылки на одну и ту же строку в памяти. Однако если впоследствии будут сделаны изменения в одной из этих строк, это создаст совершенно новый объект string, в то время как другая строка останеться не изменой!

string s1 = "Строка";
 string s2 = s1;
 Console.WriteLine("s1 = " + s1);
 Console.WriteLine("s2 = " + s2);
 s1 = "Другая строка";
 Console.WriteLine("s1 теперь = " + s1);
 Console.WriteLine("s1 теперь = " + s1);

Возможно следующее: char[] s = { 'с', 'т', 'р', 'о', 'к', 'а'};

string myStr = new string(s); Console.WriteLine(s);

Строковые значения формально представляют собой массивы, к их отдельным элементам (символам) можно обращаться как к элементам одномерного массива (нумерация нач. с нуля):

string s = "строка"; Console.WriteLine(s[4]);

Length() – возвращает длину строки. Для копирования строк можно воспользоваться методом Copy(): s2 = string.Copy(s1);

Для нахождения позиции строки в строке применяется метод IndexOf():

int n = s.IndexOf("ока"); Console.WriteLine(n);  // n = 3

C# не допускает модификацию отдельных символов существующей строки.

Для формирования новых строк на основе существующих применяется метод Substring(), выделяющий подстроку в родительской строке. Первый аргумент – позиция подстроки, второй – длина.

string s = "строка";
 string s2 = s.Substring(3, s.Length-3);  // "ока"