前言
关键字是编程语言预定的保留标识符,对编译器有特殊意义。C#语言中的关键字有很多,用法各异。在我们的.cs源文件中,通常第一行都是以using这个关键字开始。本文就来介绍using的几个用法。using System;namespace Fountain.WinConsole.Demo{}
用法
using用法通常将其分为引入命名空间、引用命名空间使用别名和定义作用域。前二种称using指令,而第三种称为using语句。
using 指令
使用using指令引用命名空间,在使用命名空间中定义的类型时无需指定该类型的全名。使用using指令可添加 global(.NET 6 引入)、static (.NET Framework 4.6  引入)两个修饰符进行修饰。global using:将应用于一个项目所有文件。static using :访问类的静态成员和嵌套类型,无需类名称。
引入命名空间
1、using <命名空间的完整名称>
// 三方库引用using MimeKit;// .NET 库引用using System;// 自建库引用using Fountain.Utility
2、global using <命名空间的完整名称>
// GlobalUsing.cs// .NET 库引用global using System;global using System.Collections.Generic;global using System.Linq;global using System.Text;// 三方日志库引用global using log4net;// 自建库引用using Fountain.Utility
3、using static <命名空间的完整名称>
using static System.Console;using static System.Math;
注意:.NET Framework 4.6引入的新特性
4、global using static <命名空间的完整名称>
// GlobalUsing.cs// .NET 库引用global using System;global using static System.Console;global using static System.Math;// 三方日志库引用global using log4net;// 自建库引用using Fountain.Utility
命名空间使用别名
[global] using [static] <别名>=<命名空间的完整名称>
// 自建库引用using Fountain=Fountain.Utility;// .NET库定义别名using SText = System.Text;
 定义使用别名,1、利于用自己熟悉的名称;2、不同空间相同类型名,便于方法的简洁使用。
using 语句
用于定义作用域,在作用域末尾将会释放对象,类必须实现IDisposable接口。如果使用的类未实现IDisposable接口,则无法使用using语句。因为这种释放通常是通过调用对象的Dispose方法实现。
定义作用域
using (SmtpClient smtpClient = new SmtpClient()){    // 设置smtp的服务地址    smtpClient.Host = "smtp.qq.com";    //设置邮箱使用的端口,这里以QQ邮箱为例    smtpClient.Port = 587;    // 是否使用SSL    smtpClient.EnableSsl = true;    // 设置是否使用默认凭据    smtpClient.UseDefaultCredentials = true;    // userName-邮箱名称;password-根据服务提供商不同而定如QQ邮箱、163 都是使用授权码    // 授权码获取登录网页版的邮箱配置获取    smtpClient.Credentials = new System.Net.NetworkCredential("testemail@qq.com", "******");    // 发出邮件的方法    smtpClient.DeliveryMethod = NMial.SmtpDeliveryMethod.Network;    // 邮件消息实例    NMial.MailMessage messageContent = new NMial.MailMessage();    // 发送    smtpClient.Send(messageContent);}
示例
using MailKit.Net.Smtp;using MailKit.Security;using MimeKit;using System;// MailKit.Net.Smtp 与 System.Net.Mail 有相同的类,所以使用定义别名using NetMial=System.Net.Mail;using System.Net.Mime;using System.Text;using static System.Console;
namespace Fountain.WinConsole.SendMailDemo{    internal class Program    {        static void Main(string[] args)        {            try            {                // 使用了using 定义作用域                using (NetMial.SmtpClient smtpClient = new NetMial.SmtpClient())                // 如果未使用using定义别名入用,则需使用这种写法                //using (System.Net.Mail.SmtpClient smtpClient = new System.Net.Mail.SmtpClient())                {                    // 设置smtp的服务地址                    smtpClient.Host = "smtp.qq.com";                    //设置邮箱使用的端口,这里以QQ邮箱为例                    smtpClient.Port = 587;                    // 是否使用SSL                    smtpClient.EnableSsl = true;                    // 设置是否使用默认凭据                    smtpClient.UseDefaultCredentials = true;                    // userName-邮箱名称;password-根据服务提供商不同而定如QQ邮箱、163 都是使用授权码                    // 授权码获取登录网页版的邮箱配置获取                    smtpClient.Credentials = new System.Net.NetworkCredential("testemail@qq.com", "******");                    // 发出邮件的方法                    smtpClient.DeliveryMethod = NetMial.SmtpDeliveryMethod.Network;                    // 邮件消息实例                    NetMial.MailMessage messageContent = new NetMial.MailMessage();                    // 添加邮件接收地址,可以添加多个接收邮箱地址                    messageContent.To.Add("testemail@163.com");                    //设置发件人地址,发件人姓名,以及编码                    messageContent.From = new NetMial.MailAddress("testemail@qq.com", "Test", Encoding.UTF8);                    messageContent.Subject = "test";                    // 邮件标题编码                    messageContent.SubjectEncoding = System.Text.Encoding.UTF8;                    // 邮件内容                    messageContent.Body = "测试";                    // 邮件内容的编码                    messageContent.BodyEncoding = System.Text.Encoding.UTF8;                    // 设置邮件是否为HTML邮件                    messageContent.IsBodyHtml = false;                    // 设置邮件优先级                    messageContent.Priority = NetMial.MailPriority.Normal;                    // 发送                    smtpClient.Send(messageContent);                }                // 由于使用了using static System.Console 可不用在静态成员前加Console,                WriteLine("发送成功");                // 由于使用了using static System.Console 可不用在静态成员前加Console,                ReadLine();            }            catch (Exception exception)             {                // 由于使用了using static System.Console 可不用在静态成员前加Console,                WriteLine(exception.Message);            }        }    }}
小结
以上是对关键字using几种用法介绍,希望能加深大家对using的认识。
该文章在 2024/5/17 15:35:16 编辑过