- •Обзор
- •Цели
- •Microsoft .NET
- •Значения по умолчанию
- •Конструкция if
- •Конструкция if
- •Конструкция switch
- •Конструкция switch
- •Итерационные
- •Цикл while
- •Цикл do
- •Цикл for
- •Цикл foreach
- •Цикл foreach
- •Типы данных
- •Ссылочные типы
- •Характеристики типов
- •Boxing и Unboxing
- •Boxing и Unboxing
- •Статические члены классов
- •Массивы
- •Массивы
- •Структуры
- •Перечислимый тип (Enumerators)
- •Перечислимый тип (Enumerators)
- •Компиляция и выполнение программ
- •Резюме
Типы данных
Ссылочные типы
using System; class DataTypeTest
{
public int variableVal;
}
class DataTypeTestRef
{
static void Main()
{
DataTypeTest dataTest = new DataTypeTest(); dataTest.variableVal = 100; funcDataTypeTest(dataTest);
Console.WriteLine(dataTest.variableVal);
}
static void funcDataTypeTest(DataTypeTest dataTest)
{
int tempVar=10; dataTest.variableVal = tempVar*20;
}
}
Характеристики типов
данных и ссылочных типов
|
Значение(Value) |
Ссылка |
|
|
(Reference) |
Переменная |
Действительное |
Ссылка |
содержит |
значение |
|
Размещается |
В стеке (Stack) |
В памяти |
|
|
(Heap) |
Значение по |
Нуль (Zero) |
Нуль- |
умолчанию |
|
указатель |
|
|
(Null) |
Параметр |
Копируется |
Копируется |
функции |
значение |
ссылка |
Boxing и Unboxing
Boxing – это преобразование типа значений в ссылочный тип
Unboxing – это преобразование ссылочного типа в тип значение
Boxing и Unboxing
...
class BoxEx
{
int objsTaker(object objectX)
{
//objsTaker takes an object
//and processes it here
}
object objsConverter()
{
//objsConverter does the processing
//and returns an object
}
}
...
//Implementation of code int variable1;
variable1 = 5;
BoxEx boxVar = new BoxEx(); boxVar.objsTaker(variable1); //line 1
int convertVar = (int) boxVar.objsConverter(); //line 2
...
Работа с типами данных в C#
C# предоставляет унифицированную систему типов (Unified Type System)
Все типы данных в C# наследуются от единственного класса object
Статические члены классов
Статические члены не связаны ни с одним конкретным объектом, кроме самого класса
Существует только один экземпляр
такого… метода/класса
static int staticMem;
…
static int instanceCount()
{
//instanceCount Implementation
}
…
Массивы
Массив – это группа значений, имеющих один и тот же тип данных
Значения хранятся в непрерывной области памяти, что упрощает доступ и работу с ними
Синтаксис объявления массивов в C# приведен ниже:
Массивы
int[] arr = new int[5];
int[,] arr = new int[3,4];
int[][] arr = new int[3][];
arr[0] = new int[4];
arr[1] = new int[10];
Структуры
Могут иметь методы
Могут иметь конструкторы
Не имеет механизма наследования
…
struct structEx
{
public int structDataMember; public void structEx()
{
//Constructor Implementation
}
public void structMethod1()
{
//structMethod1 Implementation
}
}
…