Купить
 
 
Жанр: Учеба

Си шарп: создание приложений для windows

страница №3

s Application.
Default Namespace - используемое по умолчанию в проекте пространство
имен.
Startup Object - имя класса, содержащего метод Main, который будет
вызываться при запуске приложения (подробнее о методе Main читайте в
главе 9).
1 Если окно Properties отсутствует, в Visual Studio .NET вы можете открыть
его, используя меню View/Properties Window или "горячей" клавиши Alt+Enter.
Создание первого приложения 37
HeloWorId Property Pages
References Pa
| С irifiguration ptopr
iv -.p.
't:e n"n\" ^f t"a wj'-Lt M s i f i i t w l I1 .-И p ^ t i
Рис. 3.1. Окно свойств проекта "Common Properties/General"
Application Icon - путь к файлу с пиктограммой для приложения.
Project File - имя файла, содержащего информацию о проекте.
Project Folder - путь к папке, содержащей файл проекта.
Output File - имя выходного файла. Файл с таким именем будет формироваться
при построении вашего приложения.
Wrapper Assembly Key File и Wrapper Assembly Key Name. Эти свойства
проекта выходят за рамки данной книги, поэтому подробнее узнать о
применении этих свойств вы сможете, обратившись к Microsoft .NET
Framework SDK Documentation, входящей в состав Visual Studio .NET.
Кроме того, вам необходимо знать о свойствах на закладке Configuration
Properties/Build (рис. 3.2).
Рис. 3.2. Окно свойств проекта "Configuration Properties/Build"
HetloWorhi Ptoperty Pages;
п! !&-hvei '• у)
j _J nnhaurahfin Prop1
! v Build
J Debugging
j Advanced
•j ЦЛЬтг i't№ ( M l
••• i I- к,
i li-tl Г I ..-t-.1?l . lJ-C.fl-"1 1 \ .- -
Al:ftii4!e:ol"lj,o.k.' I •' -
L l ; " " . , "; - , 1 .-•',-
V ..-Ls"i. "':mr
ti-l ' J ' l f r m j ' . f ; . . , =";:
B ' " . . .
Co~f g-ja1 cr r-j-isgcr
, . " L C O : I - I - . . .1.-11
Lomlilional r i n n p i l a r l n n Const"iiil"
j f r t t l y syrn'os i n *jri*h to p c i f i rn conmtoial corpia-ог. [,'jrf r
38 Раздел I. Основные положения
Conditional Compilation Constants - определенные во время компиляции
проекта константы. Они помогают разработчику управлять ходом
компилирования проекта.
Optimize code. Включение этого свойства в true помогает, в некоторых
случаях, увеличить производительность вашей программы в десятки раз.
Check for Arithmetic Overflow/Underflow - контролировать выход результата
за границы допустимых значений.
Allow unsafe code blocks - разрешить использование в проекте ключевого
слова unsafe.
Warning Level - определить уровень предупреждений, отображаемых
при компиляции программы.
Treat Warnings As Errors - воспринимать все предупреждения как
ошибки.
Output Path - путь, где будет сформирован выходной файл.
XML Documentation File - имя файла, в который будет записываться
документация из комментариев программы. Для формирования документации
необходимо использовать меню Tools/Build Comment Web Pages.
Подробнее об XML-документации читайте в главе 17.
Generate Debugging Information - генерировать отладочную информацию.
Эта опция должна быть включена при отладке приложения.
Мы не будем изменять свойства программы. Оставим все значения по
умолчанию.
Дизайнер форм
То, что вы видите на экране при создании нового приложения, называется
окном дизайнера (рис. 2.3). В этом окне, по сути, в графическом
виде отображается код вашей программы. Дизайнер предназначен для
удобного и интуитивного создания пользовательского интерфейса программы.
К основным элементам дизайнера форм можно причислить:
• Properties Window (пункт меню View /Properties Window);
• Layout Toolbar (пункт меню View/Toolbars/Layout);
• Toolbox (пункт меню View/Toolbox).

Окно кода программы
Как уже отмечалось, в окне дизайнера форм отображается только
графическое представление визуальных компонент формы. Все данные
вашей программы хранятся кодом программы на языке С#. Для того
чтобы посмотреть код созданной нами формы, выберите в контекстном
меню элемента MainForm окна Solution Explorer пункт View Code. Откроется
файл MainForm.cs. Это и есть вся ваша программа, вернее, ее
представление синтаксисом языка С#. То же самое вы могли написать
в текстовом файле, используя, например, редактор Notepad. Давайте
посмотрим, что же представляет собой каркас приложения, созданного
Visual Studio .NET.
Создание первого приложения 39
using :3yscem;
using :jysten.Drawing;
using System.Collections;
using System. Com.ponentModel;
using System.Windows.Forms;
using System.Data;
namespi.ee Hello World
{
/// "summary"
/// Summary description for Forml.
/// "/summary"
public class MainForm: System.Windows.Forms.Form
I

/// "summary"
/// Required designer variable.
/// "/sumnary"
private System.ComponentModei.Container components = null;
public MainForm()
// Required for Windows Form Designer support
Initial!zeComponent ();
// TODO: Add any constructor code after InitiaiiseComponent call
/// "summary"
/// Clean up any resources being used.
/// "/sLimnary"
protected override void Dispose! bool disposing ]
(
iff disposing )
/
if (components != null)
components.Dispose();
base.Dispose( disposing );
ftregion Windows Form Designer generated code
/// "summary"
/// Required method for Designer support-do not modify
/// the contents of this method with the code editor.
/// "/summary"
private void InitializeComponent()
// MainForm
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13)
this-ClientSize = new System.Drawing.Size(292, 273);
this.Name = "MainForm";
this.Text = "Formi";
#endregion
/// "summary"
/// The main entry point for the application.
/// "/sumraary"
[STAThread!
static void Main!)
Application.Run(new Forml()];
Для вас, наверное, пока этот текст - китайская грамота. Ничего страшного!
Если хватит терпения дочитать книгу до конца, этот код на языке
С# будет понятен вам с первого взгляда.
Пока лишь кратко поясним некоторые блоки представленного выше
кода. Более подробно все языковые конструкции будут рассмотрены в
следующих главах. Цель этой главы - объяснить вам, как просто создать
полноценное Windows-приложение на языке С# в среде Visual Studio .NET.
using System;
using System.Drawing;
using System. .Collections;
using System.ComponentModei;
using System.Windows.Forms;
using System.Da я a;
Этот код определяет, какие пространства имен будут использоваться в
данном файле. Каждая представленная строка состоит из двух частей -
ключевого слова Using и определяемого пространства имен.

Далее следует объявление собственного пространства имен.
nameарасе HelloWorld
Создание первого приложения 41
Здесь мы объявили собственное пространство имен под названием
"HelloWorld". Теперь, если кто-то будет использовать созданные нами в
этом пространстве имен элементы, ему придется использовать полное
имя объекта: Hello World. MainForm.
В нашем пространстве имен объявлен класс формы с именем "MainForm".
Внутри фигурных скобок представлена реализация этого класса.
Класс MainForm реализует метод Main. Найдите внутри фигурных скобок
следующий код:
static void Main()
I

Application.Run(new Formlf));
}
Функция Main задает точку входа программы, то место, откуда начнется
выполнение описанных вами методов (подробнее о функции Main читайте
в главе 9).
Компиляция программы
То, что у нас написано в файле MainForm.cs, не является исполняемой
программой. Это лишь правила, которые определяют, что должен сделать
компилятор при создании нашей программы. Для того, чтобы откомпилировать
наш код, выберите в меню Build/Build HelloWorld. Внизу
среды разработки появится окно - Task List (список задач). В нем будет
представлено сообщение:
D:\C#\Examp les\HelloWorld\MainForm.cs( 72): The type or namespace name
'FormV could not be found (are you missing a using directive or an assembly
reference?)
Это значит, что ваша программа содержит ошибки и не откомпилируется,
пока вы их не исправите. Иначе говоря, компилятор не может определить,
что такое "Forml", и в скобках дается пояснение (are you missing
a using directive or an assembly reference?-"Вы пропускаете директиву
using или связку со сборкой?"), которое может помочь устранить проблему
(только не в нашем случае).
Output Window
Visual Studio .NET имеет специальное окно, помогающее программистам
следить за ходом построения проекта. Открыть это окно можно через
пункт меню View/Other Windows/Output. Вы можете увидеть в нем ход
процесса построения вашей программы. Для нашего проекта результат
компиляции представлен следующим образом:
Build complete-I errors, 0 warnings
В результате компиляции обнаружена одна ошибка.
Done
Build: 0 succeeded, I failed, 0 skipped
Построение проекта закончилось сбоем.
42 Раздел I. Основные положения
Исправление ошибок
Что же мешает нам построить программу? Все очень просто. После
создания нового проекта, как вы помните, мы переименовали нашу
форму из Forml в MainForm. Разработчики Visual Studio .NET, конечно,
постарались, и код программы автоматически исправил имя класса с
Forml на MainForm. Однако среда разработки не такая умная, как нам
хотелось бы, поскольку имя было исправлено только в объявлении
класса:
public class MainForm: System.Windows.Forms.Form
А вот использование класса со старого имени "Forml" осталось не
измененным.
A p p l i c a t i o n . R u n ( n e w F o r m l ( ) ) ;
Исправьте вышеприведенную строку на строку следующего содержания:

A p p l i c a t i o n . R u n ( n e w M a i n F o r m ( ) ) ;
Теперь снова попробуйте откомпилировать проект. На этот раз Output
Window будет содержать следующее сообщение:
Build complete-0 errors, 0 warnings
Building satellite assemblies...
Build: 1 succeeded, 0 failed, 0 skipped
Это означает, что проект успешно построен. Теперь вы можете запустить
его.
Запуск приложения
П е Р Е О Г °
Запуск приложения из среды Visual Studio
.NET возможен в двух режимах: с отладкой
или без. Для запуска приложения в режиме
отладки необходимо выбрать пункт меню
Debug/Start. Этот режим пригодится вам для
отладки создаваемого приложения в ходе
выполнения программы. Если же вы хотите
запустить приложение только для того, чтобы
посмотреть результаты выполненной работы,
воспользуйтесь пунктом меню Debug/
Start Without Debugging.

Запустите приложение в режиме "без отладки"
{Debug/Start Without Debugging). На
экране появится окно вашего первого приложения
(рис. 3.3).
В результате у вас должно было получиться полнофункциональное
приложение для Windows со всеми присущими ему атрибутами. Правда,
вряд ли какую-то пользу можно извлечь из пустой формы.
Создание первого приложения 43
Расширение функциональности программы
Давайте расширим наше приложение, добавив к нему кнопку. Для этого
переключитесь в окно дизайнера и перетяните из панели Toolbox элемент
Button на вашу форму. Поместите эту кнопку по центру формы.
Теперь необходимо наделить ее функциональностью. Для этого измените
некоторые свойства кнопки в окне Properties:
Name: HelloWorld;
Text: Нажми меня.
Теперь необходимо обработать нажатие кнопки. Для этого в окне
Properties переключитесь на закладку Events (глава 2). Событие Click предназначено
для обработки нажатия кнопки. Щелкните два раза левой
кнопкой мыши по ячейке Click. Visual Studio .NET переключит вас в окно
кода программы. В код были добавлены следующие строки:
private void HelloWorId_CIick(object sender. System.EventArgs e)

1


Добавьте в код следующую строку:
private void HeiloWorld_Click(object sender, System.EventArgs e)
MessageBox.Show("Здравствуй Мир!");
i
Откомпилируйте и снова запустите программу.
На этот раз приложение содержит добавленную
вами кнопку "Нажми меня". Кликните на
ней мышью. На экране появится сообщение, изображенное
на рис. 3.4.
Рис. з.4. Сообщение "Здрав- Как видите, создавать приложения на С# с исствуй
Мир!" пользованием Visual Studio .NET очень просто.
Здзаес7о"й Ч р1
РАБОТА С КОНСОЛЬЮ
При рассмотрении некоторых глав данной книги в качестве примеров
удобнее использовать консольные приложения. Код консольного
приложения немного короче, чем приложения Windows Forms. Это
избавит нас от длительного процесса создания GUI части программы и
позволит сконцентрироваться на рассмотрении функциональной части
приложений.
Для работы с консолью в .NET используется класс Console. Преимущества
этого класса заключаются в двух аспектах: все его методы являются
статическими, так что не нужно создавать для использования его экземпляр.
Он объединяет в себе ввод, вывод и вывод ошибок. По умолчанию
ввод/вывод производится на стандартную консоль (если ее нет, напри44
Раздел I. Основные положения
мер, в оконных приложениях, вывод просто не осуществляется), но устройства
ввода и вывода можно изменить.
Для работы с консолью обычно используются четыре метода: Read,
ReadLine, Write и WriteLine, из них первых два - для ввода, последние - для
вывода.
Метод Read
Метод Read читает символ из потока ввода. Он возвращает значение
типа int, равное коду прочитанного символа, либо -1(минус один), если
ничего прочитано не было. Приведем пример программы:
do
!
int i = Console.Read();
if (i != -1)
Console.WriteLinef"(0} ({1} I ", (char]i, i) ;
else
break;
} while (true);
Эта программа показывает на экране введенные символы и их коды.
Метод ReadLine
Метод ReadLine читает из потока ввода строку текста (она завершается
символом перевода строки или возврата каретки). Метод возвращает
объект типа string или null, если ввод осуществить не удалось.
do
{
string s = Console.ReadLine();
if (s !- null)
Console.WriteLine("Введенная строка: " + s) ;
else
break;
} while (true);
Методы Write и WriteLine
Метод Write выводит на экран значение переданной ему переменной.

Он определен для всех базовых типов и поддерживает форматированные
строки. Таким образом, можно либо вызвать Write с указанным значением
в качестве параметра:
Console.Write (I);
Console.Write (0. 7 5"3) ;
Console.Write("Hello!"),
либо передать строку форматирования и список значений. В строке форматирования
применяется множество модификаторов. Здесь мы отметим
Создание первого приложения 45
лишь то, что вместо "{п}" подставляется n-й входной параметр (нумерация
начинается с 0):
Console.Write("Привет, {0;", Name);
Метод WriteLine отличается от Write только тем, что выводит символ
перевода строки в конце.
Я приведу пример создания консольного приложения с использованием
наиболее употребляемых операций и дам к ним комментарии. Давайте
напишем программу, которая будет осуществлять ввод данных от
пользователя, обрабатывать их и выводить на экран.
Откройте окно создания нового проекта, выбрав меню File/New project.
В списке языков выберите С#, в списке шаблонов - Console Application.
Укажите имя для вашего приложения "TestConsole". Откроется окно кода
программы на С#. Код программы представлен ниже.
using System;
namespace TestConsole
{
/// "summary"
/// Summary description for Classl.
/// "/summary"
class Classl
{
/// "summary"
/// The main entry point for che application.
/// "/summary"
[STAThread]
static void Main(string[] args)
// TODO: Add code to start application here
}
Эта программа ничего пока не делает, но она рабочая и готова к запуску.
Модифицируйте ваше приложение представленным ниже кодом.
using System;
namespace TestConsole
{
/// "summary"
/// Summary description for Classl.
/// "/summary"
class Classl
{
II! "summary"
/// The main entry point for the application.
/// "/summary"
46 Раздел I. Основные положения
[STAThread]
static void Main(string[] args)
f
//объявляем переменную для хранения строки введенных данных
string strText;
//выводим на экран информационное сообщение
Console.WriteLine("Введите Ваше имя.");
//вводим данные с консоли
strText = Console.ReadLine();
//Выводим на экран обработанные данные
Console.WriteLine("Здравствуйте {0}", strText);
н м Основы синтаксиса С#
^ Типы данных С#
i Выражения, инструкции и разделители
"к Ветвление программ
" * Циклические операторы
* № Классы
ш я Методы
ш ш Свойства
т ш Массивы
ш я Индексаторы
н т Атрибуты
n Интерфейсы
ш Делегаты и обработчики событий
ш * Особые возможности С# и Visual Studio .NET
" работа со строками
4. ОСНОВЫ СИНТАКСИСА С#
АЛФАВИТ С#
Алфавит (или множество литер) языка программирования С# составляют
символы таблицы кодов ASCII. Алфавит С# включает:
• строчные и прописные буквы латинского алфавита (мы их будем называть
буквами);
• цифры от 0 до 9 (назовем их буквами-цифрами);
• символ "_" (подчеркивание - также считается буквой);
• набор специальных символов: " { }, 1 [ ] + - %/ \; ' : ? " " = ! & #
- л *-
• прочие символы.

Алфавит С# служит для построения слов, которые в C++ называются
лексемами. Различают пять типов лексем:
идентификаторы;
ключевые слова;
знаки (символы) операций;
литералы;
разделители.
Почти все типы лексем (кроме ключевых слов и идентификаторов)
имеют собственные правила словообразования, включая собственные
подмножества алфавита.
Лексемы обособляются разделителями. Этой же цели служит множество
пробельных символов, к числу которых относятся пробел, табуляция,
символ новой строки и комментарии.
ПРАВИЛА ОБРАЗОВАНИЯ ИДЕНТИФИКАТОРОВ
Рассмотрим правила построения идентификаторов из букв алфавита.
• Первым символом идентификатора С# может быть только буква.
• Следующими символами идентификатора могут быть буквы, цифры и
нижнее подчеркивание.
• Длина идентификатора не ограничена.
Вопреки правилам словообразования, в С# существуют ограничения
относительно применения подчеркивания в качестве самой первой буквы
в идентификаторах. Из-за особенностей реализации использование идентификаторов,
которые начинаются с этого символа, нежелательно.
Основы синтаксиса С# 49
РЕКОМЕНДАЦИИ ПО НАИМЕНОВАНИЮ ОБЪЕКТОВ
Имена -это идентификаторы. Любая случайным образом составленная
последовательность букв, цифр и знаков подчеркивания с точки зрения
грамматики языка идеально подходит на роль имени любого объекта,
если только начинается с буквы. Фрагмент программы, содержащий
подобную переменную, будет синтаксически безупречен.
И все же имеет смысл воспользоваться дополнительной возможностью
облегчить восприятие и понимание последовательностей операторов. Для
этого достаточно закодировать с помощью имен содержательную информацию.

Желательно создавать составные осмысленные имена. В этом случае
в одно слово можно "втиснуть" предложение, которое в доступной форме
представит информацию о типе объекта, его назначении и особенностях
использования.
КЛЮЧЕВЫЕ СЛОВА И ИМЕНА
Часть идентификаторов С# входит в фиксированный словарь ключевых
слов. Эти идентификаторы образуют подмножество ключевых слов
(они так и называются ключевыми словами). Прочие идентификаторы
после специального объявления становятся именами. Имена служат
для обозначения переменных, типов данных, функций. Обо всем этом
позже.
Ниже приводится таблица со списком ключевых слов. Вы не можете
использовать эти имена для образования классов, функций, переменных
и других языковых структур.
abstract
as
base
bool
break
byte
case
catch
char
checked
class
const
continue
decimal
default
delegate
do
double
else
enum
event
explicit
extern
false
finally
fixed
float
for
foreach
goto
if
implicit
in
int
interface
internal
is
lock
long
namespace
new
null
object
operator
out
override
params
private
protected
public
readonly
ref
return
sbyte
sealed
short
sizeof
stackalloc
static
string
struct
switch
this
throw
true
try
typeof
uint
ulong
unchecked
unsafe
ushort
using
virtual
void
volatile
while
50 Раздел I I . Фундаментальные понятия
КОММЕНТАРИИ
Часто бывает полезно вставлять в программу текст, который является
комментарием только для читающего программу человека и игнорируется
компилятором. В С# это можно сделать одним из двух способов.

Символы /* начинают комментарий, заканчивающийся символами */
. Такая последовательность символов эквивалентна символу пропуска
(например, символу пробела). Это особенно полезно для многострочных
комментариев и изъятия частей программы при редактировании, однако
следует помнить, что комментарии /* */ не могут быть вложенными.
Символы // начинают комментарий, заканчивающийся в конце строки,
на которой они появились. И здесь вся последовательность символов
эквивалентна пропуску. Этот способ наиболее полезен для коротких комментариев.
Символы /У можно использовать для того, чтобы закомментировать
символы /* или */, а символами /* можно закомментировать //.
ЛИТЕРАЛЫ
В С# существует четыре типа литералов:
• целочисленный литерал;
• вещественный литерал;
• символьный литерал;
• строковый литерал.
Литералы - это особая категория слов языка. Для каждого подмножества
литералов используются собственные правила словообразования. Мы
не будем приводить их здесь, ограничившись лишь общим описанием
структуры и назначения каждого подмножества литералов. После этого
правила станут более-менее понятны.
Целочисленный литерал служит для записи целочисленных значений
и является соответствующей последовательностью цифр (возможно, со
знаком '-'). Целочисленный литерал, начинающийся со знака 0, воспринимается
как восьмеричное целое. В этом случае цифры 8 и 9 не должны
встречаться среди составляющих литерал символов. Целочисленный литерал,
начинающийся с Ох или ОХ, воспринимается как шестнадцатеричное
целое. В этом случае целочисленный литерал может включать символы
от А или а, до F или f, которые в шестнадцатеричной системе эквивалентны
десятичным значениям от 10 до 15. Непосредственно за
литералом могут располагаться в произвольном сочетании один или два
специальных суффикса: U (или и) и L (или 1).
Вещественный литерал служит для отображения вещественных значений.
Он фиксирует запись соответствующего значения в обычной десятичной
или научной нотациях. В научной нотации мантисса отделяется
от порядка литерой Е (ли е). Непосредственно за литералом может располагаться
один из двух специальных суффиксов: F (или f) и L (или 1).
Основы синтаксиса С# 51
Значением символьного литерала является соответствующее значение
ASCII кода (это, разумеется, не только буквы, буквы-цифры или специальные
символы алфавита С#). Символьный литерал представляет собой
последовательность одной или нескольких литер, заключенных в одинарные
кавычки. Символьный литерал служит для представления литер в
одном из форматов представления. Например, литера Z может быть представлена
литералом "Z", а также литералами "\132" и "\х5А". Любая литера
может быть представлена в нескольких форматах представления:
обычном, восьмеричном и шестнадцатеричном.
Строковые литералы являются последовательностью (возможно, пустой)
литер в одном из возможных форматов представления, заключенных
в двойные кавычки. Строковые литералы, расположенные последовательно,
соединяются в один литерал, причем литеры соединенных строк остаются
различными. Так, последовательность строковых литералов "\xF"
"F" после объединения будет содержать две литеры, первая из которых
является символьным литералом в шестнадцатеричном формате "\xF",
вторая - символьным литералом "F". Строковый литерал и объединенная
последовательность строковых литералов заканчиваются пустой литерой,
которая используется как индикатор конца литерала.
5. ТИПЫ ДАННЫХ С#
С# является жестко типизированным языком. При его использовании
вы должны объявлять тип каждого объекта, который создаете (например,
целые числа, числа с плавающей точкой, строки, окна, кнопки, и
т. д.), и компилятор поможет вам избежать ошибок, связанных с присвоением
переменным значений только того типа, который им соответствует.
Тип объекта указывает компилятору размер объекта (например, объект
типа int занимает в памяти 4 байта) и его свойства (например, форма
может быть видима и невидима, и т.д.).
Подобно языкам C++ и Java, C# подразделяет типы на два вида: встроенные
типы, которые определены в языке, и определяемые пользователем
типы, которые выбирает программист.
С# также подразделяет типы на две другие категории: размерные и
ссылочные. Основное различие между ними - это способ, которым их
значения сохраняются в памяти. Размерные типы сохраняют свое фактическое
значение в стеке. Ссылочные типы хранят в стеке лишь адрес
объекта, а сам объект сохраняется в куче. Куча - основная память программ,
доступ к которой осуществляется на много медленнее чем к стеку.

Если вы работаете с очень большими объектами, то сохранение их в
куче имеет много преимуществ.
В главе 5 будут подробно рассмотрены различные преимущества и
недостатки работы с ссылочными типами.
С# также поддерживает и указатели на типы, но они редко употребляются.
Применение указателей связано с использованием неуправляемого кода.
ОСОБЕННОСТИ ИСПОЛЬЗОВАНИЯ СТЕКА И КУЧИ
Стек - это структура данных, которая сохраняет элементы по принципу:
первым пришел, последним ушел (полная противоположность очереди). Стек
относится к области памяти, поддерживаемой процессором, в которой сохраняются
локальные переменные. Доступ к стеку во много раз быстрее, чем
к общей области памяти, поэтому использование стека для хранения данных
ускоряет работу вашей программы. В С# размерные типы (например,
целые числа) располагаются в стеке: для их значений зарезервирована область
в стеке, и доступ к ней осуществляется по названию переменной.
Ссылочные типы (например, объекты) располагаются в куче. Куча -
это оперативная память вашего компьютера. Доступ к ней осуществляется
медленнее, чем к стеку. Когда объект располагается в куче, то переменная
хранит лишь адрес объекта. Этот адрес хранится в стеке. По
Типы данных С# 53
адресу программа имеет доступ к самому объекту, все данные которого
сохраняются в общем куске памяти (куче).
"Сборщик мусора" уничтожает объекты, располагающиеся в стеке, каждый
раз, когда соответствующая переменная выходит за область видимости.
Таким образом, если вы объявляете локальную переменную в пределах
функции, то объект будет помечен как объект для "сборки мусора". И
он будет удален из памяти после завершения работы функции.
Объекты в куче тоже очищаются сборщиком мусора, после того как
конечная ссылка на них будет разрушена.
ВСТРОЕННЫЕ ТИПЫ
Язык С# предоставляет программисту широкий спектр встроенных
типов, которые соответствуют CLS (Common Lan

Список страниц

Закладка в соц.сетях

Купить

☏ Заказ рекламы: +380504468872

© Ассоциация электронных библиотек Украины

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