Инструкция using предназначена для неявного вызова метода Dispose() для объекта, который используется в блоке. 
    
Инструкция может using применяется только к объектам, которые реализованы в интерфейсе System.IDisposable.
 
   Инструкция может using применяется только к объектам, которые реализованы в интерфейсе System.IDisposable.
    Синтаксис: 
    
using (объект) {
//использование объекта
}
или
using (тип объект = инициализация) {
//использование объекта
}
   using (объект) {
//использование объекта
}
или
using (тип объект = инициализация) {
//использование объекта
}
    Создайте компонент, файл с расширением .dll и класс в нем, с модификатором доступа public.
   
 
   
   
    Переименуйте имя класса в Counter. Введите код. Скомпилируйте и получите файл с расширением .dll
   
     Class1.cs  
     
usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;//подключить пространство именusingSystem.ComponentModel;//атрибут объявляющий сборку совместимой с CLS[assembly: CLSCompliant(true)]namespacedllCounter {-  
//переименовать класс -  
publicclassCounter : IDisposable{ -   
ushortshowStart; -   
ushortshowEnd; -   
decimalprice; -   
publicCounter(ushortarg0,ushortarg1,decimalarg2) { -    
showStart = arg0; -    
showEnd = arg1; -    
price = arg2; -   
} -   
publicushortResultShow() { -    
return(ushort)(showEnd - showStart); -   
} -   
publicdecimalSum() { -    
returnMath.Round((decimal)(ResultShow() * price), 2); -   
} -   
publicvoidDispose() { -    
GC.Collect(); -   
} -  
} }
usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;//подключить пространство именusingSystem.ComponentModel;//атрибут объявляющий сборку совместимой с CLS[assembly: CLSCompliant(true)]namespacedllCounter {-  
//переименовать класс -  
publicclassCounter : IDisposable{ -   
ushortshowStart; -   
ushortshowEnd; -   
decimalprice; -   
publicCounter(ushortarg0,ushortarg1,decimalarg2) { -    
showStart = arg0; -    
showEnd = arg1; -    
price = arg2; -   
} -   
publicushortResultShow() { -    
return(ushort)(showEnd - showStart); -   
} -   
publicdecimalSum() { -    
returnMath.Round((decimal)(ResultShow() * price), 2); -   
} -   
publicvoidDispose() { -    
GC.Collect(); -   
} -  
} }
    Создайте обычный проект. Добавьте ссылку на созданную библиотеку. 
   
   
   
    Выберите файл с расширением .dll
   
   
   
    Ссылка добавлена. 
   
 
   
     Main.cs  
     
usingSystem;//подключить пространство именusingdllCounter;classProgram {-  
publicstaticintMain() { -   
Console.WriteLine("Расчет электроэнергии\n"); -   
Console.Write("Начальные показания : "); -   
ushortshowStart =ushort.Parse(Console.ReadLine()); -   
Console.Write("Конечные показания : "); -   
ushortshowEnd =ushort.Parse(Console.ReadLine()); -   
Console.Write("Цена за 1кВт/ч : "); -   
decimalprice =decimal.Parse(Console.ReadLine()); -   
//для неявного вызова метода Dispose(), который объявлен -   
//в коде dllCounter.dll -   
using(Counter C =newCounter(showStart, showEnd, price)) { -    
Console.WriteLine("Сумма за электроэнергию : {0}", C.Sum()); -   
} -   
Console.ReadKey(); -   
return0; -  
} }
usingSystem;//подключить пространство именusingdllCounter;classProgram {-  
publicstaticintMain() { -   
Console.WriteLine("Расчет электроэнергии\n"); -   
Console.Write("Начальные показания : "); -   
ushortshowStart =ushort.Parse(Console.ReadLine()); -   
Console.Write("Конечные показания : "); -   
ushortshowEnd =ushort.Parse(Console.ReadLine()); -   
Console.Write("Цена за 1кВт/ч : "); -   
decimalprice =decimal.Parse(Console.ReadLine()); -   
//для неявного вызова метода Dispose(), который объявлен -   
//в коде dllCounter.dll -   
using(Counter C =newCounter(showStart, showEnd, price)) { -    
Console.WriteLine("Сумма за электроэнергию : {0}", C.Sum()); -   
} -   
Console.ReadKey(); -   
return0; -  
} }
    
Расчет электроэнергии
Начальные показания : 0
Конечные показания : 100
Цена за 1кВт/ч : 0,3084
Сумма за электроэнергию : 30,84
                                   
   
  Начальные показания : 0
Конечные показания : 100
Цена за 1кВт/ч : 0,3084
Сумма за электроэнергию : 30,84