Отношение между С# и .NET

Модуль 5. Объектно-ориентированный подход (ООП). Общие сведения.

Операции ввода-вывода

Установочные и завершающие операции

Используя классы StreamWriter и StreamReader можно создать свои файловые объекты для выполнения различных операций с текстовыми файлами.

//создание нового файла или перезапись существующегоStreamWriter outStream = new StreamWriter(@"c:\a1.txt");//outStream - созданный нами объект //открытие существующего файла на чтениеStreamReader inStream = new StreamReader(@"c:\a1.txt");//inStream - созданный нами объект

Для завершения работы с файлом используют метод Close.

outStream.Close();inStream.Close();

Для записи в открытый файл используют методы Write и Writeline.

outStream.WriteLine(x);outStream.Write("Z={0}",z);outStream.Write();

Для чтения строки из открытого файла используют метод ReadLine.

string s = inStream.ReadLine();

Для проверки, достигнут ли конец файла при чтении используют метод Peek или свойство EndOfStream.

while (inStream.Peek()>-1) { string s = inStream.ReadLine(); Console.Writeline(s); }//равнозначный вариантwhile (!inStream.EndOfStream) { string s = inStream.ReadLine(); Console.Writeline(s); }

Для того, чтобы считывать отдельные элементы из строки, её считывают целиком, а затем разбивают на массив элементов с помощью метода Split.

while (inStream.Peek()>-1) { string s = inStream.ReadLine(); string[] elements = s.Split( ' ', ',', '.', ':', '\t' ); foreach (string e in elements) { if (e != "") { int d = Convert.ToInt32(e); Console.Write("{0} ", d); } } Console.WriteLine(); }

Пример: Транспонировать матрицу, содержащуюся в текстовом файле. Двухмерные массивы использовать нельзя.

using System.IO;static void enter(string filename){ //описываем необходимые переменные int i, j, M, N; string s; //вводим число элементов Console.Write("Введите число строк матрицы N="); s = Console.ReadLine(); N = Convert.ToInt32(s); Console.Write("Введите число столбцов матрицы M="); s = Console.ReadLine(); M = Convert.ToInt32(s); StreamWriter outStream = new StreamWriter(filename); //запускаем циклы по всем элементам матрицы for (i = 0; i < N; i++) //цикл по строкам { for (j = 0; j < M; j++) //цикл по столбцам { //вводим i,j-ый элемент Console.Write("Введите элемент матрицы ({0},{1}) ", i + 1, j + 1); s = Console.ReadLine(); outStream.Write("{0,3} ", s); } outStream.WriteLine(); } outStream.Close();} static void transpose(string filename, string filename2){ StreamReader inStream = new StreamReader(filename); int N = 0; int M = 0; int Mmax = 0; while (inStream.Peek() > -1) { string s = inStream.ReadLine(); string[] elements = s.Split(' '); M = 0; foreach (string e in elements) if (e != "") { M++; if (M > Mmax) Mmax = M; } N++; } inStream.Close(); StreamWriter outStream = new StreamWriter(filename2); for (int j = 0; j < M; j++) //цикл по столбцам { inStream = new StreamReader(filename); for (int i = 0; i < N; i++) //цикл по строкам { string s = inStream.ReadLine(); string[] elements = s.Split(' '); int k = 0; foreach (string e in elements) if (e != "") { if (k == j) { outStream.Write("{0,3} ", e); } k++; } } inStream.Close(); outStream.WriteLine(); } outStream.Close();} static void print(string filename){ StreamReader inStream = new StreamReader(filename); int N = 0; int M = 0; int Mmax = 0; while (inStream.Peek() > -1) { string s = inStream.ReadLine(); Console.WriteLine(s); } inStream.Close();} static void Main(string[] args){ enter(@"c:\a1.txt"); transpose(@"c:\a1.txt", @"c:\a2.txt"); print(@"c:\a2.txt"); Console.ReadKey();}

С# — это относительно новый язык программирования, который характеризуется двумя следующими преимуществами.

§ С# спроектирован и разработан специально для применения с Microsoft .NET Framework (развитой платформой разработки, развертывания и выполнения распределенных приложений).

§ С# — язык, основанный на современной объектно-ориентированной методологии проектирования, при разработке которого специалисты из Microsoft опирались на опыт создания подобных языков, построенных в соответствии с предложенными около 20 лет назад объектно-ориентированными принципами.

Нужно подчеркнуть то важное обстоятельство, что С# — это полноценный язык программирования. Хотя он и предназначен для генерации кода, выполняемого в среде .NET, сам по себе он не является частью .NET Существует ряд средств, которые поддерживаются .NET, но не поддерживаются С#, и, есть также средства, поддерживаемые С# и не поддерживаемые .NET (например, некоторые случаи перегрузки операций). Однако поскольку язык С# предназначен для применения на платформе .NET, вам, как разработчику, важно иметь представление о .NET Framework, если вы хотите эффективно разрабатывать приложения на С#. Поэтому в настоящей главе мы потратим некоторое время на то, чтобы заглянуть "за кулисы" .NET