Инструкция using предназначена для неявного вызова метода Dispose() для объекта, который используется в блоке.
Инструкция может using применяется только к объектам, которые реализованы в интерфейсе System.IDisposable.
Инструкция может using применяется только к объектам, которые реализованы в интерфейсе System.IDisposable.
Синтаксис:
using (объект) {
//использование объекта
}
или
using (тип объект = инициализация) {
//использование объекта
}
using (объект) {
//использование объекта
}
или
using (тип объект = инициализация) {
//использование объекта
}
Создайте компонент, файл с расширением .dll и класс в нем, с модификатором доступа public.
Переименуйте имя класса в Counter. Введите код. Скомпилируйте и получите файл с расширением .dll
Class1.cs
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Text;
using
System.Threading.Tasks;
//подключить пространство имен
using
System.ComponentModel;
//атрибут объявляющий сборку совместимой с CLS
[assembly: CLSCompliant(
true
)]
namespace
dllCounter {
-
//переименовать класс
-
public
class
Counter : IDisposable{
-
ushort
showStart;
-
ushort
showEnd;
-
decimal
price;
-
public
Counter(
ushort
arg0,
ushort
arg1,
decimal
arg2) {
-
showStart = arg0;
-
showEnd = arg1;
-
price = arg2;
-
}
-
public
ushort
ResultShow() {
-
return
(
ushort
)(showEnd - showStart);
-
}
-
public
decimal
Sum() {
-
return
Math.Round((
decimal
)(ResultShow() * price), 2);
-
}
-
public
void
Dispose() {
-
GC.Collect();
-
}
-
}
}
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Text;
using
System.Threading.Tasks;
//подключить пространство имен
using
System.ComponentModel;
//атрибут объявляющий сборку совместимой с CLS
[assembly: CLSCompliant(
true
)]
namespace
dllCounter {
-
//переименовать класс
-
public
class
Counter : IDisposable{
-
ushort
showStart;
-
ushort
showEnd;
-
decimal
price;
-
public
Counter(
ushort
arg0,
ushort
arg1,
decimal
arg2) {
-
showStart = arg0;
-
showEnd = arg1;
-
price = arg2;
-
}
-
public
ushort
ResultShow() {
-
return
(
ushort
)(showEnd - showStart);
-
}
-
public
decimal
Sum() {
-
return
Math.Round((
decimal
)(ResultShow() * price), 2);
-
}
-
public
void
Dispose() {
-
GC.Collect();
-
}
-
}
}
Создайте обычный проект. Добавьте ссылку на созданную библиотеку.
Выберите файл с расширением .dll
Ссылка добавлена.
Main.cs
using
System;
//подключить пространство имен
using
dllCounter;
class
Program {
-
public
static
int
Main() {
-
Console.WriteLine(
"Расчет электроэнергии\n"
);
-
Console.Write(
"Начальные показания : "
);
-
ushort
showStart =
ushort
.Parse(Console.ReadLine());
-
Console.Write(
"Конечные показания : "
);
-
ushort
showEnd =
ushort
.Parse(Console.ReadLine());
-
Console.Write(
"Цена за 1кВт/ч : "
);
-
decimal
price =
decimal
.Parse(Console.ReadLine());
-
//для неявного вызова метода Dispose(), который объявлен
-
//в коде dllCounter.dll
-
using
(Counter C =
new
Counter(showStart, showEnd, price)) {
-
Console.WriteLine(
"Сумма за электроэнергию : {0}"
, C.Sum());
-
}
-
Console.ReadKey();
-
return
0;
-
}
}
using
System;
//подключить пространство имен
using
dllCounter;
class
Program {
-
public
static
int
Main() {
-
Console.WriteLine(
"Расчет электроэнергии\n"
);
-
Console.Write(
"Начальные показания : "
);
-
ushort
showStart =
ushort
.Parse(Console.ReadLine());
-
Console.Write(
"Конечные показания : "
);
-
ushort
showEnd =
ushort
.Parse(Console.ReadLine());
-
Console.Write(
"Цена за 1кВт/ч : "
);
-
decimal
price =
decimal
.Parse(Console.ReadLine());
-
//для неявного вызова метода Dispose(), который объявлен
-
//в коде dllCounter.dll
-
using
(Counter C =
new
Counter(showStart, showEnd, price)) {
-
Console.WriteLine(
"Сумма за электроэнергию : {0}"
, C.Sum());
-
}
-
Console.ReadKey();
-
return
0;
-
}
}
Расчет электроэнергии
Начальные показания : 0
Конечные показания : 100
Цена за 1кВт/ч : 0,3084
Сумма за электроэнергию : 30,84
Начальные показания : 0
Конечные показания : 100
Цена за 1кВт/ч : 0,3084
Сумма за электроэнергию : 30,84