Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Инфа.doc
Скачиваний:
12
Добавлен:
04.06.2015
Размер:
766.98 Кб
Скачать
  1. Основные операторы языка c#

Основные x.y f(x) a[x] x++ x-- new typeof checked unchecked ->

Унарные + - ! ~ ++x --x (T)x true false & sizeof

Мультипликативные * / % Аддитивные + -

Сдвиг << >> Относительные и тестирующие тип < > <= >= is as

Операторы равенства == !=

Логическое AND & Логическое XOR ^ Логическое OR |

Условное AND &&

Условный оператор OR ||

Условное ?:

Присваивание = += -= *= /= %= &= |= ^= <<= >>= Поддержка значения NULL ?? Лямбда-оператор Оператор =>

public struct Complex

{

public int real;

public int imaginary;

public Complex(int real, int imaginary) //constructor

{

this.real = real;

this.imaginary = imaginary;

}

// Declare which operator to overload (+),

// the types that can be added (two Complex objects),

// and the return type (Complex):

public static Complex operator +(Complex c1, Complex c2)

{

return new Complex(c1.real + c2.real, c1.imaginary + c2.imaginary);

}

}

Кроме того, многие операторы могут перегружаться пользователем. Таким образом, их значение при применении к пользовательскому типу меняется.

  1. Основные типы данных в языке С#. Приведение типов в языке С#.

byte 0 .. 255

sbyte -128 .. 127

short -32,768 .. 32,767

ushort 0 .. 65,535

int -2,147,483,648 .. 2,147,483,647

uint 0 .. 4,294,967,295

long -9,223,372,036,854,775,808 .. 9,223,372,036,854,775,807

ulong 0 .. 18,446,744,073,709,551,615

float -3,402823e38 .. -3,402823e38 ..

double -1,79769313486232e308 .. 1,79769313486232e308

decimal -79228162514264337593543950335 .. 79228162514264337593543950335

char Символ Юникода.

string Строка символов Юникода.

bool true или false

object Объект.

Приведение типов данных

Int i=1;

Double d=23;

i = (int) d;

  1. Преимущества технологии Windows Forms над Win32 API и MFC. Примеры.

Windows Forms это имя, данное в графический интерфейс прикладного программирования (API) включены как частьMicrosoft в . NET Framework , обеспечивая доступ к родной Microsoft Windows элементов интерфейса, заключив существующих API Windows в управляемом коде . Хотя видно, в качестве замены для более ранних и более сложные C + + основана Microsoft Foundation Class библиотека , она не дает парадигмы сопоставимы с модель-представление-контроллер . Некоторые после рынка и библиотеки сторонних производителей были созданы, чтобы обеспечить эту функциональность. Наиболее широко используемый из них Пользовательский интерфейс процесса Application Block , который выделяется на модели Microsoft и практики группы для бесплатного скачивания, что включает в себя исходный код для быстрого начала примеры.

Конструктор Windows Forms обеспечивает визуальную среду разработки для размещения Windows Presentation Foundation контроля. Управления WPF размещается в специальных форм управления Windows, который называется ElementHost . Этот элемент управления позволяет контролировать WPF для участия в макет формы и получить клавиатуры и мыши сообщений. Во время разработки, вы можете организовать ElementHost управления так же, как и любой формы управления Windows.

public Form1()

{

InitializeComponent();

}

private void button1_Click(object sender, EventArgs e)

{

label1.Text = label1.Text + "0";

label1.Text.Collor = red;

}

int APIENTRY WinMain(HINSTANCE hCurrentInst,HINSTANCE hPreviousInst, LPSTR lpszCmdLine,int nCmdShow)

{

// Задать класс окна

WNDCLASS wndClass;

wndClass.style = CS_HREDRAW | CS_VREDRAW; // Стиль окна

wndClass.lpfnWndProc = WndProc;

LRESULT APIENTRY WndProc(HWND hWnd, UINT message,WPARAM wParam, LPARAM lParam)

{

// обработать все сообщения, на которые приложение должно реагировать

switch(message)

{

case …:

Когда ОС Microsoft Windows только появилась на свет, мы, как и множество других про-

программистов, создавали для нее приложения на языках С и C++. При этом нам приходилось

напрямую обращаться к программному интерфейсу (API) этой ОС, обрабатывая сообще-

сообщения при помощи оператора swi tch.

Пока приложения состояли из нескольких окон и диалоговых панелей, такая техно-

технология программирования не вызывала особых проблем. Когда же перед нами встала

задача создания действительно сложных приложений Windows, имеющих очень боль-

большое количество окон и диалоговых панелей, а также нетривиальный пользовательский

интерфейс, пришлось примейить библиотеку классов MFC.

Несмотря на то что MFC сильно упрощает создание приложений Microsoft Win-

Windows, даже в комплекте с этой библиотекой инструментарий Microsoft Visual C++ едва

ли можно назвать настоящим визуальным средством проектирования приложений.

Во-первых, все еще приходится писать слишком много программного кода,

не имеющего непосредственного отношения к прикладной задаче, для решения кото-

которой создастся приложение.

Во-вторых, визуальные средства проектирования пользовательского интерфей-

интерфейса не позволяют выйти дизайну этого интерфейса за рамки стандартных «серых»

Введение 21

диалоговых панелей и надоевших уже элементов управления — кнопок, меню, спи-

списков и т. п. Сегодня, когда пользователь компьютера привык видеть на экране красоч-

красочно оформленные страницы Web-сайтов, едва ли стоит предлагать ему программы

с блеклым интерфейсом, разработанным еще на заре создания Microsoft Windows.

22, 31. Программирование на платформе. Структура программы на языке C#.

Структура программы на .NET, объявление и вызов методов в языке C#.

Полностью объектно ориентированный язык. Точка входа – статический метод main.

namespace ConsoleApplication1

{

class Class1

{

public static void Main(string[] args)

{

System.Console.WriteLine("Hello World");

}

}

}

  1. Пространства имен. Их назначение, архитектура и применение. Примеры использования пространств имен.

Пространства имен представляют собой способ организации различных типов, присутствующих в программах C#. Их можно сравнить с папкой в компьютерной файловой системе. Подобно папкам, пространства имен определяют для классов уникальные полные имена. Программа C# содержит одно или несколько пространств имен, каждое из которых либо определено программистом, либо определено как часть написанной ранее библиотеки классов.

Например, пространство имен System содержит класс Console, который включает методы для чтения и записи в окне консоли. В пространство имен Systemвходит ряд других пространств, например System.IO и System.Collections. Только в платформе .NET Framework представлено более 80 пространств имен, в каждом из которых находятся тысячи классов, поскольку пространства имен используются для того, чтобы избежать путаницы с типами и методами, имеющими одинаковые имена.

При написании класса вне объявления пространства имен компилятор предоставит ему заданное по умолчанию пространство имен.

Обычно пространства имен используются при работе с большими программами. Собственные пространства имен предоставляют определенный уровень контроля над методами и типами с одинаковыми именами.

namespace StatisticalData

{

class FileHandling

{

public void Load() {} // code to load statistical data

}

}

namespace Images

{

class FileHandling

{

public void Load() {} // code to load an image file

}

}

class Program

{

static void Main()

{

StatisticalData.FileHandling data = new StatisticalData.FileHandling();

data.Load();

Images.FileHandling image = new Images.FileHandling();

image.Load();

}

}

  1. Процессы(processes), потоки(threads), в ОС Windows и их использование на платформе Microsoft .NET. Определения, функции. Пул потоков.

Для разделения различных выполняемых приложений в операционных системах используются процессы.

Процесс – единица владения ресурсами. Включает в себя стек, кучу, все содержание программы и потоки выполнения программы.

Поток — это последовательность инструкций, которой операционная система выделяет время процессора.Каждый процесс, выполняющийся в операционной системе, состоит по крайней мере из одного потока.Процессы, имеющие более одного потока, называются многопоточными.

Компьютеры с несколькими процессорами или с многоядерными процессорами и Hyper-Threading-процессы могут выполнять несколько потоков в одно и то же время.Параллельная обработка нескольких потоков может значительно повысить производительность программы, но также может сделать отладку намного сложнее, так как появляется необходимость следить за несколькими потоками.

Кроме того, у многопоточности есть новые типы потенциальных ошибок.Часто, например, два или более потока должны получить доступ к ресурсу, но в каждый момент времени только один может делать это безопасно.Необходимо взаимное исключение для того, чтобы только один поток имел доступ к ресурсу в каждый момент времени.Если взаимное исключение выполняется неверно, может случиться взаимоблокировка, когда ни один поток не сможет выполняться.Взаимоблокировки определенно могут быть большой проблемой при отладке.

myThread = new System.Threading.Thread(new

System.Threading.ThreadStart(myStartingMethod));

myThread.Start();

Пул потоков — это коллекция потоков, которые могут использоваться для выполнения нескольких задач в фоновом режиме.(Дополнительные сведения см. в разделе Работа с потоками (C# и Visual Basic).) Это позволяет разгрузить главный поток для асинхронного выполнения других задач.

Пулы потоков часто используются в серверных приложениях.Каждый входящий запрос назначается потоку из пула, таким образом, запрос может обрабатываться асинхронно без задействования главного потока и задержки обработки последующих запросов.

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

Обычно пулы имеют максимальное количество потоков.Если все потоки заняты, дополнительные задачи помещаются в очередь, где хранятся до тех пор, пока не появятся свободные потоки.

Можно реализовать собственный пул потоков, но гораздо проще использовать пул, предоставляемый .NET Framework через класс ThreadPool.

Используя группировку потоков в пул, можно вызвать метод ThreadPool.QueueUserWorkItem с делегатом для процедуры, которую требуется выполнить, а Visual Basic или C# создаст поток и выполнит процедуру.

public void DoWork()

{

// Queue a task.

System.Threading.ThreadPool.QueueUserWorkItem(

new System.Threading.WaitCallback(SomeLongTask));

// Queue another task.

System.Threading.ThreadPool.QueueUserWorkItem(

new System.Threading.WaitCallback(AnotherLongTask));

}