Компиляциядан кийин using директивасы кандай көрүнөт?
sobes.tech AI
AIден жооп
Директива using өзү өзү иштеп чыгуу кодуна жараша иштебейт. Ал компилятор тарабынан компиляция учурунда иштетилет жана бир нече максаттарга колдонулат:
-
Колдонулган кеңейтүү аянттары (usings for namespaces): Төртүнчү кеңейтүү аянттарынан типтерди колдонууга мүмкүндүк берет, толук квалификацияланган аталышсыз. Компиляциядан кийин, IL-коддогу шилтемелер толук квалификацияланган аталыштарды камтыйт (аталыш кеңейтиши + типтин аты).
// Компиляцияга чейин: using System; // Console классын квалификациясыз колдонуу Console.WriteLine("Hello"); // Компиляциядан кийин (IL-коддо): // System.Console::WriteLine() методун чакыруу -
Аталыштар үчүн псевдонимдер (using aliases): Аталыштар үчүн кыска ат түзөт. IL-коддо оригиналдуу толук аттар колдонулат, псевдонимдер эмес.
// Компиляцияга чейин: using MyCustomType = MyProject.MyNamespace.SomeVeryLongTypeName; MyCustomType instance = new MyCustomType(); // Компиляциядан кийин (IL-коддо): // MyProject.MyNamespace.SomeVeryLongTypeName типинин экземплярин түзүү -
Статикалык using (using static): Типтин статикалык мүчөлөрүн аталыш көрсөтпөстөн чакырууга мүмкүндүк берет. IL-коддо типтин толук аты жана статикалык метод көрсөтүлөт.
// Компиляцияга чейин: using static System.Math; double result = Sqrt(16.0); // Math.Sqrt колдонуу // Компиляциядан кийин (IL-коддо): // System.Math::Sqrt(double) статикалык методун чакыруу -
usingдирективасы (Statement block):IDisposableинтерфейсин ишке ашырган ресурстарды туура бошотууга мүмкүндүк берет. Компиляторtry...finallyблогун түзүп,Dispose()методун чакырат.// Компиляцияга чейин: using (var stream = new System.IO.FileStream("file.txt", System.IO.FileMode.Open)) { // агым менен иштөө } // Dispose() бул жерде чакырылат // Компиляциядан кийин (IL-коддо): /* .try { // stream объектисин түзүү // агым менен иштөө } finally { // null текшерүү жана stream.Dispose() чакыруу } */
Демек, using директивалары компиляцияланган коддо өзүнчө калбайт. Алар типтердин жана мүчөлөрдүн аттарын чечүүдө (алдыңкы үч учур үчүн) жана ресурстарды башкаруу кодун түзүүдө (акыркы учур үчүн) таасир этет.