最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#中is,as,using關鍵字的使用說明

 更新時間:2020年12月07日 14:45:42   作者:tongyuehong  
這篇文章主要介紹了C#中is,as,using關鍵字的使用說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

一、問題描述

在C#中is,as,using關鍵字具有其特點及使用場景,其中is關鍵字用于檢查該對象是否與給定類型兼容,as關鍵字用于將對象轉換為指定類型,using關鍵字除了用于引入命名空間之外,還具有回收對象資源,如文件資源、網(wǎng)絡資源和數(shù)據(jù)庫資源等。

1、is:用于檢查對象是否與給定類型兼容,如果兼容,則返回true,否則返回false,不會拋出異常。在進行類型轉換之前,可以先用is判斷對象是否與給定類型兼容,如果兼容再進行轉換。

案例:

string str ="test"; 
object obj = str;
if(obj is string) {string str2 = (string)obj};

2、as:用于引用類型之間轉換,直接進行轉換,若轉換成功,則返回轉換后的對象,若轉換失敗返回null,不拋出異常。

案例:

string str ="test"; 
object obj = str;
string str2 = obj as tring;
if(str2 !=null) {轉換成功}

3、using:引用命名空間,有效回收資源,using關鍵字可以回收多個對象的資源,關鍵字后面的小括號內(nèi)創(chuàng)建的對象必須實現(xiàn)IDisposable接口,或者該類的基類已經(jīng)實現(xiàn)了IDisposable接口。回收資源的時機是在using關鍵字下面的代碼塊執(zhí)行完成之后自動調(diào)用接口方法Dispose()銷毀對象。

案例:

using (Test test =new Test()) { 各種操作;}
 calss Test :IDisposable {
   public void Dispose() {回收操作;}
 }

二、代碼案例

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
 
namespace test1
{
 public partial class Form9 : Form
 {
  public Form9()
  {
   InitializeComponent();
  }
 
  private void button1_Click(object sender, EventArgs e)
  {
   //轉為object
   if (obj_rdb.Checked)
   {
    //使用using關鍵字,在代碼塊執(zhí)行完成之后自動回收資源
    //由于FileStream已經(jīng)實現(xiàn)了IDisposable接口,可以直接使用
    using (FileStream fileStream = new FileStream(@"d:\test.txt", System.IO.FileMode.Create))
    {
     object obj = fileStream as object; //直接使用as轉換
     if (obj != null)
     {
      MessageBox.Show("FileStream轉換為object成功", "提示信息");
     }
     else
     {
      MessageBox.Show("FileStream轉換為object失敗", "錯誤信息");
     }
    }
   }
   else
   {
    using (FileStream fileStream = new FileStream(@"d:\test.txt", System.IO.FileMode.Create))
    {
      //直接強制轉換
     try
     {
      Stream stream = (Stream)fileStream;
      MessageBox.Show("FileStream轉換為Stream成功", "提示信息");
     }catch(Exception ex)
     {
      MessageBox.Show(ex.Message, "錯誤信息");
     }
     
    }
   }
   
  }
 }
}

三、顯示結果

補充知識:c#Constructor構造函數(shù)注入

1、創(chuàng)建接口

 public interface ITimeProvider
  {
    DateTime CurrentDate { get; }
    string CurrentYear { get; }
  }

2、繼承接口,實現(xiàn)類

 public class TimeProvider : ITimeProvider
  {
    public DateTime CurrentDate { get { return DateTime.Now; } }
    public string CurrentYear { get { return DateTime.Now.Year.ToString(); } }
  }

3、創(chuàng)建注入機制

 public class Assembler
  {
    private static Dictionary<Type, Type> dictionary = new Dictionary<Type, Type>();
    public Assembler()
    {
      dictionary.Add(typeof(ITimeProvider), typeof(TimeProvider));
    }
    public object Create(Type type)
    {
      if (type == null || !dictionary.ContainsKey(type)) throw new NullReferenceException();
      Type targetType = dictionary[type];
      return Activator.CreateInstance(targetType);
    }
 
    public T Create<T>()
    {
      return (T)Create(typeof(T));
    }
  }

4、客戶端調(diào)用

 public class Client
  {
    private ITimeProvider timeProvider;
    public Client(ITimeProvider timeProvider)
    {
      this.timeProvider = timeProvider;
    }
    public string GetYear()
    {
      return timeProvider.CurrentYear .ToString();
    }
    public string GetDatetime()
    {
      return timeProvider.CurrentDate.ToString();
    }
  }

5、使用實現(xiàn)

   ITimeProvider timeProvider = (new Assembler()).Create<ITimeProvider>();
      Client clinet = new Client(timeProvider);
      Console.WriteLine(clinet.GetYear());
      Console.WriteLine(clinet.GetDatetime());

以上這篇C#中is,as,using關鍵字的使用說明就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • C#實現(xiàn)chart控件動態(tài)曲線繪制

    C#實現(xiàn)chart控件動態(tài)曲線繪制

    這篇文章主要為大家詳細介紹了C#實現(xiàn)chart控件動態(tài)曲線繪制,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • Unity編輯器資源導入處理函數(shù)OnPostprocessAudio使用案例

    Unity編輯器資源導入處理函數(shù)OnPostprocessAudio使用案例

    這篇文章主要為大家介紹了Unity編輯器資源導入處理函數(shù)OnPostprocessAudio使用案例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-08-08
  • C#后端接收form-data,創(chuàng)建實體類教程

    C#后端接收form-data,創(chuàng)建實體類教程

    這篇文章主要介紹了C#后端接收form-data,創(chuàng)建實體類教程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • C#計算汽車行駛方向的方法分析

    C#計算汽車行駛方向的方法分析

    這篇文章主要介紹了C#計算汽車行駛方向的方法,結合實例形式分析了C#數(shù)值計算的原理與相關技巧,需要的朋友可以參考下
    2016-09-09
  • 解析c#顯示友好時間的實現(xiàn)代碼

    解析c#顯示友好時間的實現(xiàn)代碼

    本篇文章是對c#中顯示友好時間的實現(xiàn)代碼進行了介紹,需要的朋友參考下
    2013-05-05
  • C#使用GET、POST請求獲取結果

    C#使用GET、POST請求獲取結果

    這篇文章主要以一個簡單的用戶登陸為例,詳細介紹了C#使用GET、POST請求獲取結果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • 采用C#代碼動態(tài)設置文件權限

    采用C#代碼動態(tài)設置文件權限

    在開發(fā)中,我們經(jīng)常會使用IO操作,例如創(chuàng)建,刪除文件等操作。在項目中這樣的需求也較多,我們也會經(jīng)常對這些操作進行編碼,但是對文件的權限進行設置,這樣的操作可能會手動操作,本文介紹一種采用代碼動態(tài)對文件設置權限的操作。
    2016-12-12
  • 深入解析C#編程中泛型委托的使用

    深入解析C#編程中泛型委托的使用

    這篇文章主要介紹了C#編程中泛型委托的使用,引用泛型委托的代碼可以指定類型參數(shù)以創(chuàng)建已關閉的構造類型,需要的朋友可以參考下
    2016-02-02
  • C#無限參數(shù)的寫法

    C#無限參數(shù)的寫法

    這篇文章主要介紹了C#無限參數(shù)的寫法,通過循環(huán)遍歷再結合paras.Add方法實現(xiàn)無限參數(shù)的功能,是比較實用的技巧,需要的朋友可以參考下
    2014-12-12
  • c#通過DES加密算法加密大文件的方法

    c#通過DES加密算法加密大文件的方法

    這篇文章主要介紹了c#通過DES加密算法加密大文件的方法,涉及C#文件操作與DES加密的相關技巧,需要的朋友可以參考下
    2015-05-05

最新評論

呼伦贝尔市| 田东县| 衡南县| 射阳县| 民权县| 石景山区| 石景山区| 蒙城县| 宕昌县| 惠州市| 贵定县| 突泉县| 齐齐哈尔市| 砀山县| 集贤县| 漳平市| 福建省| 普兰店市| 梅河口市| 赣榆县| 和林格尔县| 苏尼特右旗| 逊克县| 芒康县| 临邑县| 黔西| 广灵县| 永宁县| 灵丘县| 丘北县| 福鼎市| 宕昌县| 太原市| 遂溪县| 萨嘎县| 勃利县| 曲靖市| 山阳县| 方山县| 南召县| 新宾|