前言
關(guān)鍵字是編程語言預(yù)定的保留標(biāo)識(shí)符,對(duì)編譯器有特殊意義。C#語言中的關(guān)鍵字有很多,用法各異。在我們的.cs源文件中,通常第一行都是以u(píng)sing這個(gè)關(guān)鍵字開始。本文就來介紹using的幾個(gè)用法。using System;
namespace Fountain.WinConsole.Demo
{
}
用法
using用法通常將其分為引入命名空間、引用命名空間使用別名和定義作用域。前二種稱using指令,而第三種稱為using語句。
using 指令
使用using指令引用命名空間,在使用命名空間中定義的類型時(shí)無需指定該類型的全名。使用using指令可添加 global(.NET 6 引入)、static (.NET Framework 4.6 引入)兩個(gè)修飾符進(jìn)行修飾。global using:將應(yīng)用于一個(gè)項(xiàng)目所有文件。static using :訪問類的靜態(tài)成員和嵌套類型,無需類名稱。
引入命名空間
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、不同空間相同類型名,便于方法的簡(jiǎn)潔使用。
using 語句
用于定義作用域,在作用域末尾將會(huì)釋放對(duì)象,類必須實(shí)現(xiàn)IDisposable接口。如果使用的類未實(shí)現(xiàn)IDisposable接口,則無法使用using語句。因?yàn)檫@種釋放通常是通過調(diào)用對(duì)象的Dispose方法實(shí)現(xiàn)。
定義作用域
using (SmtpClient smtpClient = new SmtpClient())
{
// 設(shè)置smtp的服務(wù)地址
smtpClient.Host = "smtp.qq.com";
//設(shè)置郵箱使用的端口,這里以QQ郵箱為例
smtpClient.Port = 587;
// 是否使用SSL
smtpClient.EnableSsl = true;
// 設(shè)置是否使用默認(rèn)憑據(jù)
smtpClient.UseDefaultCredentials = true;
// userName-郵箱名稱;password-根據(jù)服務(wù)提供商不同而定如QQ郵箱、163 都是使用授權(quán)碼
// 授權(quán)碼獲取登錄網(wǎng)頁版的郵箱配置獲取
smtpClient.Credentials = new System.Net.NetworkCredential("testemail@qq.com", "******");
// 發(fā)出郵件的方法
smtpClient.DeliveryMethod = NMial.SmtpDeliveryMethod.Network;
// 郵件消息實(shí)例
NMial.MailMessage messageContent = new NMial.MailMessage();
// 發(fā)送
smtpClient.Send(messageContent);
}
示例
下面通過C#實(shí)現(xiàn)發(fā)送郵件為例: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())
{
// 設(shè)置smtp的服務(wù)地址
smtpClient.Host = "smtp.qq.com";
//設(shè)置郵箱使用的端口,這里以QQ郵箱為例
smtpClient.Port = 587;
// 是否使用SSL
smtpClient.EnableSsl = true;
// 設(shè)置是否使用默認(rèn)憑據(jù)
smtpClient.UseDefaultCredentials = true;
// userName-郵箱名稱;password-根據(jù)服務(wù)提供商不同而定如QQ郵箱、163 都是使用授權(quán)碼
// 授權(quán)碼獲取登錄網(wǎng)頁版的郵箱配置獲取
smtpClient.Credentials = new System.Net.NetworkCredential("testemail@qq.com", "******");
// 發(fā)出郵件的方法
smtpClient.DeliveryMethod = NetMial.SmtpDeliveryMethod.Network;
// 郵件消息實(shí)例
NetMial.MailMessage messageContent = new NetMial.MailMessage();
// 添加郵件接收地址,可以添加多個(gè)接收郵箱地址
messageContent.To.Add("testemail@163.com");
//設(shè)置發(fā)件人地址,發(fā)件人姓名,以及編碼
messageContent.From = new NetMial.MailAddress("testemail@qq.com", "Test", Encoding.UTF8);
messageContent.Subject = "test";
// 郵件標(biāo)題編碼
messageContent.SubjectEncoding = System.Text.Encoding.UTF8;
// 郵件內(nèi)容
messageContent.Body = "測(cè)試";
// 郵件內(nèi)容的編碼
messageContent.BodyEncoding = System.Text.Encoding.UTF8;
// 設(shè)置郵件是否為HTML郵件
messageContent.IsBodyHtml = false;
// 設(shè)置郵件優(yōu)先級(jí)
messageContent.Priority = NetMial.MailPriority.Normal;
// 發(fā)送
smtpClient.Send(messageContent);
}
// 由于使用了using static System.Console 可不用在靜態(tài)成員前加Console,
WriteLine("發(fā)送成功");
// 由于使用了using static System.Console 可不用在靜態(tài)成員前加Console,
ReadLine();
}
catch (Exception exception)
{
// 由于使用了using static System.Console 可不用在靜態(tài)成員前加Console,
WriteLine(exception.Message);
}
}
}
}
小結(jié)
以上是對(duì)關(guān)鍵字using幾種用法介紹,希望能加深大家對(duì)using的認(rèn)識(shí)。
該文章在 2024/5/17 15:35:16 編輯過