C# 快速導覽 - extern 外部方法






google_ad_client = "ca-pub-1277342310653446";
google_ad_host = "ca-host-pub-1556223355139109";
google_ad_host_channel = "L0004";
google_ad_slot = "7187368929";
google_ad_width = 728;
google_ad_height = 15;














google_ad_client = "ca-pub-1277342310653446";
google_ad_host = "ca-host-pub-1556223355139109";
google_ad_host_channel = "L0004";
google_ad_slot = "4683073635";
google_ad_width = 728;
google_ad_height = 90;












公告



《如何自學程式設計》入選 Google Play 台灣地區2016年度最佳書籍|本站於 Google Play 銷售電子書。
預計之後會調整本站內容,凡是有兩個版本的教材,舊版本將刪除。













google_ad_client = "ca-pub-1277342310653446";
google_ad_host = "ca-host-pub-1556223355139109";
google_ad_host_channel = "L0004";
google_ad_slot = "5435125940";
google_ad_width = 728;
google_ad_height = 15;


























C# 快速導覽 - extern 外部方法






類別 (class) 中若要使用自訂程式庫 (library) 的外部方法,需要先利用 .net 程式庫中的 System.Runtime.InteropServices.DllImport 引入程式庫檔案,然後在所需類別中將該方法 (method) 宣告為 static extern



也可用 using 引入名稱空間,不過這非單一引入指定方法,而是引入整個名稱空間或類別。



舉例如下
class Demo {
[System.Runtime.InteropServices.DllImport("class28.dll")]
public static extern void DoSomething();

static void Main() {
DoSomething();
}
}

/* 《程式語言教學誌》的範例程式
http://pydoing.blogspot.com/
檔名:class27.cs
功能:示範 C# 程式
作者:張凱慶
時間:西元 2013 年 6 月 */



這裡用 System.Runtime.InteropServices.DllImport() 載入 dll 檔案
[System.Runtime.InteropServices.DllImport("class28.dll")]



我們提供的 class28.dll 的程式為 class28.cs ,如下
namespace Demo2 {
public class Demo3 {
public void DoSomething() {
System.Console.WriteLine("There is no spoon.");
}
}
}

/* 《程式語言教學誌》的範例程式
http://pydoing.blogspot.com/
檔名:class28.cs
功能:示範 C# 程式
作者:張凱慶
時間:西元 2013 年 6 月 */



先將 class28.cs 編譯為 class28.dll ,然後編譯 class27.cs ,編譯結果是成功的,執行時發生了 DllNotFoundException 的例外,這是找不到 class28.dll 的意思



這是因為 C# 只有在 Windows 平台才開放直接存取相同目錄下的程式庫檔案,其他平台 Mac OX 、 Linux 等都預設限制不得存取存取相同目錄下的程式庫檔案,這變成自己得設定該平台的環境變數唷!相關資訊請參考 Mono 網頁的 Interop with Native Libraries


















中英文術語對照
類別class
程式庫library
方法method



您可以繼續參考

類別




相關目錄

回 C# 快速導覽
回 C# 教材
回首頁



參考資料

Standard ECMA-334 C# Language Specification
msdn: extern (C# 參考)







沒有留言:




















window.___gcfg = { 'lang': 'zh-TW' };





google_ad_client = "ca-pub-1277342310653446";
google_ad_host = "ca-host-pub-1556223355139109";
google_ad_host_channel = "L0004";
google_ad_slot = "5963585466";
google_ad_width = 728;
google_ad_height = 15;











Popular posts from this blog

迅雷 Thunder 7.9.43.5054 免安裝版 (9.1.41.914 安裝版) - 支援BT下載的萬用 檔案下載工具

qBittorrent 4.1.1 免安裝中文版 - 取代uTorrent的BT下載器

Nhiều đồn đoán cho rằng bộ đồ "phá vỡ quy tắc" của Meghan Markle được lấy cảm hứng từ trang phục của Công nương Diana