Опубликован: 01.11.2011 | Уровень: специалист | Доступ: платный
Лекция 3:

ООП, строки, массивы, коллекции в C#

< Лекция 2 || Лекция 3 || Лекция 4 >
Аннотация: Сопоставляются классы в С++ и C#. Рассматриваются такие вопросы, связанные с классами, как модификаторы доступа, атрибуты, поля, конструкторы, методы, свойства, инкапсуляция, интерфейсы, наследование, неявные преобразования и полиморфизм. Создание объектов, класс System.Object, ключевое слово new. В этой лекции также читатель познакомится со строковыми литералами, с форматными строками, со сравнением строк, с поиском строк с помощью регулярных выражений, с заменой текста. Обсуждаются способы создания массивов, их сортировки и поиска, синхронизация массивов, сравнение массивов с векторами. Многомерные массивы. Коллекции в C#.
Ключевые слова: ПО

Дополнительные материалы к занятию можно скачать здесь.

Вложенные файлы: Presentation_3.pptx

По способам объявления и инициализации массивов C# больше похож на JavaScript, чем на C++.

Одномерные массивы

C# JavaScript
using System;
class Example
{
    static void Main()
    {
        double[] a = new double[] {8.3,11.6,4.8,23.11,54.03,26.8,9.4};
        int n = a.Length;
        string str;
        int i;
        double sum = 0;
        for (i = 0; i < n; i++)
        {
            Console.WriteLine("a["+ i + "] = " + a[i]);
            sum += a[i];
        }
        str = "Сумма массива равна " + sum ;
        Console.WriteLine(str);
        Console.WriteLine("Нажмите любую кнопку!");
        Console.ReadKey();
    }
}
            
<html>
<script type="text/javascript">

	var i,n,sum,str;
        a = new Array(8.3,11.6,4.8,23.11,54.03,26.8,9.4);
        n = a.length;
        str="";
        sum = 0;
        for (i = 0; i < n; i++)
        {
            str+="a["+ i + "] = " + a[i] + "<br>";
            sum += a[i];
        }
        str+= "Сумма массива равна " + sum ;
        document.write(str);
</script>
</html>
            


C++
#include<iostream>
#include<math.h>

using namespace std;

void main()
{
 double a[]={8.3,11.6,4.8,23.11,54.03,26.8,9.4};
 int n=sizeof(a)/sizeof(a[0]);
 int i;
 double sum=0;
 for(i=0;i<n;i++)
 {
 cout<<"\na["<<i<<"] = "<<a[i];
 sum+=a[i];
 }
 cout<<"\nsum = "<<sum;
}
            

Многомерные массивы

Сначала рассмотрим пример на С++ Объявление и инициализация многомерных массивов в C# и JavaScript существенно отличается от таковой на C++
С++ C#
#include<iostream>
#include<math.h>
using namespace std;

#define n 5  //Количество строк
#define m 3  //Количество столбцов

void main()
{
int i,j;
double d[n][m]= {
					{1, 2, 3 },
					{4, 5, 6 },
					{7, 8, 9 },
					{10,11,12},
					{13,14,15}
				};

cout<<"\nArray 5x3:";
for(i=0;i<n;i++)
{
	cout<<"\n";
	for(j=0;j<m;j++)
	{
		cout<<"\t"<<d[i][j];
	}
}

cout<<"\n"<<endl;

}
            
using System;
class Example
{

    static void print(int[][] alpha)
    {
        // Отображаем элементы массива
        for (int i = 0; i < alpha.Length; i++)
        {
            for (int j = 0; j < alpha[i].Length; j++)
            {
                System.Console.Write("{0}{1}", alpha[i][j], j == 
    (alpha[i].Length - 1) ? "" : " ");
            }
            System.Console.WriteLine();
        }
    }

    static void Main()
    {
        int[][] a = new int[5][];
        a[0] = new int[3] { 1, 2, 3 };
        a[1] = new int[3] { 4, 5, 6 };
        a[2] = new int[3] { 7, 8, 9 };
        a[3] = new int[3] { 10, 11, 12 };
        a[4] = new int[3] { 13, 14, 15 };
        print(a);

        System.Console.WriteLine("Нажмите любую кнопку!");
        System.Console.ReadKey();
  
    }
}
            


Объявление и инициализация многомерных массивов в C# и JavaScript существенно отличается от таковой на C++
JavaScript
<html>
<script type="text/javascript">

var i,j,n,str;
a=new Array();
a[0]=new Array(1,2,3);
a[1]=new Array(4,5,6);
a[2]=new Array(7,8,9);
a[3]=new Array(10,11,12);
a[4]=new Array(13,14,15);
	
m=3;
n=5;
str="";

for(i=0;i<n;i++)
{
	for(j=0;j<m;j++)
	{
		str+=a[i][j]+ " ";	
	}
	str+="<br/>";
}
document.write(str);

</script>
</html>
            

Поговорим о способах реализации объектно-ориентированного подхода в C# в сравнении с JavaScript.

C# JavaScript
using System;
class Example
{

    class goods
    {
        public string   ProductName;
        public DateTime ExpireDate;
        public double   Price;
    }


    static void Main()
    {
        goods Product = new goods();
        Product.ProductName = "Сыр голландский";
        Product.ExpireDate = new DateTime(2011, 6, 12, 8, 30, 52);
        Product.Price = 325;

        string str;
        str = "Товар: " + Product.ProductName + "\nСрок годности: " + 
Product.ExpireDate + "\nЦена: " + Product.Price + " рубля";

        Console.WriteLine(str);
        Console.WriteLine("Нажмите любую кнопку!");
        Console.ReadKey();
    }
}
        
<html>
<script type="text/javascript">

var ProductName,Price,ExpireDate,str;
ProductName="Сыр голландский";
Price=325;
ExpireDate=new Date(2011, 6, 12, 8, 30, 52);

Product=new Object;
Product.ProductName=ProductName;
Product.Price=Price;
Product.ExpireDate=ExpireDate;
str="Товар: " + Product.ProductName + "<br/>"
  + "Срок годности: " + Product.ExpireDate 
   + "<br>" + "Цена: " 
    + Product.Price + " рубля";
document.write(str);
</script>
</html>
        


< Лекция 2 || Лекция 3 || Лекция 4 >
Игорь Белов
Игорь Белов
Россия, г. Ейск
Александр Гринёв
Александр Гринёв
Украина, Днепропетрвск, Шаг