【07】C#入門到精通——C# 生成dll庫 C#添加現有DLL C#調用自己生成的dll庫

文章目錄

  • 0 多個.cs文件源碼
    • 01 Hero.cs
    • 02 ShowInfo.cs
    • 03 Program.cs (相當于Main文件)
    • 04 運行效果
  • 1 生成dll庫
    • 1.1 創建類庫
    • 1.2 添加要生成 dll庫 的代碼文件
      • 1.2.1 添加 Hero類
      • 1.2.2 添加 ShowInfo類
    • 1.3 生成dll庫 及 查看
  • 3 添加自己生成的dll庫
  • 4 調用運行
  • 5 常見問題
    • 5.1 類庫里里面的類不可訪問
    • 5.2 ClassLibrary2 類庫下面用不到的可以刪掉
  • 6 項目文件下載

0 多個.cs文件源碼是一個模擬 游戲英雄角色信息的 程序,
現在想將多個 .cs文件,生成類庫文件,然后在main文件中引用庫文件;

0 多個.cs文件源碼

01 Hero.cs

using System;namespace test1
{class Hero{//成員變量public string name;public string xingbie;public int nianling;public int shanghai;public int xueliang;public int shengao;public string jineng1;public int jineng1shanghai;public string jineng2;public int jineng2shanghai;}
}

02 ShowInfo.cs

using System;namespace test1
{class ShowInfo{//將Hero類,作為參數傳給 ShowInfo類的成員函數,以便于打印信息,public static void ShowHeroInfo(Hero hero){Console.WriteLine("性別: " + hero.xingbie);Console.WriteLine("年齡: " + hero.nianling);Console.WriteLine("基礎傷害: " + hero.shanghai);Console.WriteLine("基礎血量: " + hero.xueliang);Console.WriteLine("身高:" + hero.shengao);Console.WriteLine("技能1:" + hero.jineng1);Console.WriteLine("技能1傷害: " + hero.jineng1shanghai);Console.WriteLine("技能2:" + hero.jineng2);Console.WriteLine("技能2傷害: " + hero.jineng2shanghai);}}
}

03 Program.cs (相當于Main文件)

using System;
//using test1;
//類型
//關鍵字namespace test1
{class Program{static void Main(){Console.WriteLine("月黑風高殺人夜");Console.WriteLine("(請按任意鍵繼續。。。)");Console.ReadKey();Console.WriteLine("微風吹動著路邊的小草");Console.WriteLine("(請按任意鍵繼續。。。)");Console.ReadKey();////----------英雄一---------------------/////Console.WriteLine("隱約在路的盡頭有一個人影");Console.WriteLine("(請按任意鍵繼續。。。)");Console.ReadKey();Console.WriteLine("走近一看,這人叫");//實例化Hero hr1 = new Hero();hr1.name = Console.ReadLine();Console.WriteLine("原來你就是" + hr1.name);Console.WriteLine("(請按任意鍵繼續。。。)");Console.ReadKey();hr1.xingbie = "男";hr1.nianling = 18;hr1.shanghai = 100;hr1.xueliang = 100;hr1.shengao = 175;hr1.jineng1 = "飛檐走壁";hr1.jineng1shanghai = 20;hr1.jineng2 = "飛沙走右";hr1.jineng2shanghai = 30;//打印英雄信息ShowInfo.ShowHeroInfo(hr1);Console.ReadKey();////----------英雄二---------------------/////Console.WriteLine("此時遠處傳來一個女人的聲音");Console.WriteLine("(請按任意鍵繼續。。。)");Console.ReadKey();Console.WriteLine("走進一看原來是: ");Console.WriteLine("(請按任意鍵繼續。。。)");Console.ReadKey();Console.WriteLine("請輸入女俠的名稱: ");//實例化Hero hr2 = new Hero();hr2.name = Console.ReadLine();Console.WriteLine("原來你就是" + hr2.name);Console.WriteLine("(請按任意鍵繼續。。。)");Console.ReadKey();hr2.xingbie = "女";hr2.nianling = 18;hr2.shanghai = 100;hr2.xueliang = 100;hr2.shengao = 165;hr2.jineng1 = "飛檐走壁2.0";hr2.jineng1shanghai = 40;hr2.jineng2 = "飛沙走右2.0";hr2.jineng2shanghai = 60;//打印英雄信息ShowInfo.ShowHeroInfo(hr2);Console.ReadKey();}}}

04 運行效果

在這里插入圖片描述

1 生成dll庫

1.1 創建類庫

C#添加現有DLL(C#編寫的DLL)

在解決方案"test1",右鍵添加新項目->搜索 類庫,找到 類庫(.NET Frammework)->下一步,就可以創建類庫項目了

在這里插入圖片描述

在這里插入圖片描述
默認名 ClassLibrary2
在這里插入圖片描述

創建好了如下
在這里插入圖片描述
在這里插入圖片描述

1.2 添加要生成 dll庫 的代碼文件

1.2.1 添加 Hero類

ClassLibrary2 右鍵->添加->類
在這里插入圖片描述
在這里插入圖片描述
①將Hero 的類文件代碼復制過來,放在 namespace ClassLibrary2命名空間內;
②class Hero 前面添加,公共訪問權限public ,否則無法調用

在這里插入圖片描述

1.2.2 添加 ShowInfo類

同樣的方法添加 ShowInfo類

在這里插入圖片描述

1.3 生成dll庫 及 查看

ClassLibrary2右鍵->生成,即可生成 DLL 庫
在這里插入圖片描述
生成的 ClassLibrary2.dll文件查看:

右鍵ClassLibrary2 ->在文件資源管理中打開文件夾->彈出項目路徑文件->打開子目錄\bin\Debug
就可以看到ClassLibrary2.dll
在這里插入圖片描述
在這里插入圖片描述

在這里插入圖片描述

3 添加自己生成的dll庫

再要添加 dll庫 的項目下面找到 引用->添加引用(R)
在這里插入圖片描述

方法一:
->在彈出的頁面->瀏覽 找到要添加的DLL庫文件
在這里插入圖片描述
在這里插入圖片描述

方法二:
->在彈出的頁面->項目 解決方案->可以看到剛才 生成類庫的項目 勾選上即可

在這里插入圖片描述

添加完成過后 ,可以在 test1的引用下面看到 ClassLibrary2文件
在這里插入圖片描述

4 調用運行

此時,test1項目下面已經引用 Hero,Showinfo 類庫了,
那我么我們刪除,test1項目下面的 Hero,Showinfo源文件

在這里插入圖片描述
刪除之后
在這里插入圖片描述

在Program.cs文件,引用類庫文件 using ClassLibrary2;

在這里插入圖片描述
注意引用類庫文件一定與 命名空間一致
在這里插入圖片描述
運行測試

在這里插入圖片描述

5 常見問題

5.1 類庫里里面的類不可訪問

Hero 和 ShowInfo 類 都不可訪問,
在這里插入圖片描述
在這里插入圖片描述

雖然 Hero 和 ShowInfo 的成員變量是 public 訪問權限,
但 Hero 和 ShowInfo 類沒有 明確給出訪問權限,那么默認 私有屬性;所以,生成的DLL庫,不可訪問;

class Heroclass ShowInfo 前面加上 public 權限,如下所示;就OK啦;
在這里插入圖片描述
在這里插入圖片描述
修改好之后,右鍵ClassLibrary2 ->重新生成
在這里插入圖片描述

5.2 ClassLibrary2 類庫下面用不到的可以刪掉

在 ClassLibrary2 類庫下面添加項目時自動生成的 Class1.cs文件,沒有使用,可以刪掉,不影響使用;
在這里插入圖片描述

6 項目文件下載

test1項目文件下載

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/90613.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/90613.shtml
英文地址,請注明出處:http://en.pswp.cn/web/90613.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

進程控制->進程替換(Linux)

在之前的博客中,我們已經探討了進程創建、終止和等待的相關知識。今天,我們將繼續深入學習進程控制中的另一個重要概念——進程替換。回顧之前的代碼示例,我們使用fork()創建子進程時,子進程會復制父進程的代碼和數據(…

認識泛型、泛型類和泛型接口

目錄泛型泛型類泛型接口泛型 定義類、接口、方法時&#xff0c;同時聲明了一個或者多個類型變量&#xff08;如&#xff1a;<E>&#xff09;&#xff0c;稱為泛型類、泛型接口、泛型方法、它們統稱為泛型 作用&#xff1a;泛型提供了在編譯階段約束所能操作的數據類型&…

如何排查并解決項目啟動時報錯Error encountered while processing: java.io.IOException: closed 的問題

如何排查并解決項目啟動時報錯Error encountered while processing: java.io.IOException: closed 的問題 摘要 本文針對Java項目啟動時出現的java.io.IOException: closed錯誤&#xff0c;提供系統性解決方案。該異常通常由流資源異常關閉或損壞引發&#xff0c;常見于Maven依…

Kafka——多線程開發消費者實例

引言在分布式系統領域&#xff0c;Kafka憑借高吞吐量、低延遲的特性成為消息隊列的事實標準。隨著硬件技術的飛速發展&#xff0c;服務器多核CPU已成常態——一臺普通的云服務器動輒配備16核、32核甚至更多核心。然而&#xff0c;Kafka Java Consumer的設計卻長期保持著"單…

PDF 轉 HTML5 —— HTML5 填充圖形不支持 Even-Odd 奇偶規則?(第二部分)

這是關于該主題的第二部分。如果你還沒有閱讀第一部分&#xff0c;請先閱讀&#xff0c;以便理解“繞組規則”的問題。 快速回顧一下&#xff1a;HTML5 只支持 Non-Zero&#xff08;非零&#xff09;繞組規則&#xff0c;而 PDF 同時支持 Non-Zero 和 Even-Odd&#xff08;奇偶…

機器學習 KNN 算法,鳶尾花案例

目錄 一.機器學習概述 二.人工智能的兩大方向 三.KNN算法介紹 1.核心思想&#xff1a;“物以類聚&#xff0c;人以群分” 2.算法步驟 四.KNN算法實現 1.安裝scikit-learn庫 2.導入knn用于分類的類KNeighborsClassifier 3.設置KNeighborsClassifier的相關參數 4.訓練模…

強化學習(第三課第三周)

文章目錄強化學習&#xff08;第三課第三周&#xff09;一、以火星探測器為例說明強化學習的形式化表示二、強化學習中的回報三、強化學習算法的目標&#xff08;一&#xff09;馬爾可夫決策過程&#xff08;二&#xff09;狀態動作價值函數&#xff08;四&#xff09;使用Bell…

星痕共鳴數據分析2

今天實驗內容是攻擊力部分 1.思路 由于昨天數據分析出了一個函數 這個函數可以把奇怪的字節變成正常的數字 int parse_varint(unsigned const char* data, int count) {int value 0;int shift 0;for (int i 0; i < count; i) {unsigned char byte data[i];value | ((byt…

強化學習新發現:僅需更新5%參數的稀疏子網絡可達到全模型更新效果

摘要&#xff1a;強化學習&#xff08;RL&#xff09;已成為大語言模型&#xff08;LLM&#xff09;在完成預訓練后與復雜任務及人類偏好對齊的關鍵步驟。人們通常認為&#xff0c;要通過 RL 微調獲得新的行為&#xff0c;就必須更新模型的大部分參數。本研究對這一假設提出了挑…

electron 使用記錄

目錄 代理設置以打包成功 參考文檔 代理設置以打包成功 參考文檔 使用 JavaScript、HTML 和 CSS 構建跨平臺桌面應用 |電子 --- Build cross-platform desktop apps with JavaScript, HTML, and CSS | Electron

Spring boot Grafana優秀的監控模板

JVM (Micrometer) | Grafana Labs 1 SLS JVM監控大盤 | Grafana Labs Spring Boot 2.1 Statistics | Grafana Labs springboot granfana 監控接口指定接口響應的 在Spring Boot應用中&#xff0c;使用Grafana進行監控通常涉及以下幾個步驟&#xff1a; 設置Prometheus作…

LeetCode11~30題解

LeetCode11.盛水最多的容器&#xff1a; 題目描述&#xff1a; 給定一個長度為 n 的整數數組 height 。有 n 條垂線&#xff0c;第 i 條線的兩個端點是 (i, 0) 和 (i, height[i]) 。 找出其中的兩條線&#xff0c;使得它們與 x 軸共同構成的容器可以容納最多的水。 返回容器…

計算機結構-邏輯門、存儲器、內存、加法器、鎖存器、程序計數器

邏輯門 邏輯門簡單地理解即通過特定的條件實現與、或、非、異或等相關邏輯二極管 這些最基礎的邏輯門都是通過電路元器件進行搭建的&#xff0c;即半導體材料搭建的二極管二極管有個特點&#xff0c;一定條件下才可以導通&#xff0c;即得接對正負極&#xff0c;具體的原理可以…

連鎖店鋪巡查二維碼的應用

在連鎖店鋪的運營管理中&#xff0c;巡查工作是保障各門店規范運作、提升服務質量的關鍵環節。巡查二維碼的出現&#xff0c;為這一環節帶來了高效、便捷且規范的解決方案&#xff0c;其應用場景廣泛&#xff0c;優勢顯著。在如今的繁雜且效果參差不齊電子二維碼市場中&#xf…

各種前端框架界面

前端技術更新迭代很快&#xff0c;已經有不少新的前端框架問世&#xff0c;而且像geeker-admin風格的界面設計也挺不錯的。 今天去面試了前端開發崗位&#xff0c;感覺希望不大。畢竟中間空了一段時間沒接觸&#xff0c;得趕緊把新的知識點補上&#xff0c;這樣哪怕是居家辦公也…

DApp 開發者 學習路線和規劃

目錄 ?? 一、學習路線圖 階段 1:基礎知識(1~2 周) 階段 2:智能合約開發(3~4 周) 階段 3:前端與區塊鏈交互(2~3 周) 階段 4:進階與生態系統(持續學習) ?? 二、學習規劃建議(3~4 個月) ?? 三、工具推薦 ?? 四、附加建議 ?? 一、學習路線圖 階段 …

數據結構 二叉樹(3)---層序遍歷二叉樹

在上篇文章中我們主要講了關于實現二叉樹的內容&#xff0c;包括遍歷二叉樹&#xff0c;以及統計二叉樹等內容。而在這篇文章中我們將詳細講解一下利用隊列的知識實現層序遍歷二叉樹。那么層序遍歷是什么&#xff1f;以及利用隊列遍歷二叉樹又是怎么遍歷的&#xff1f;下面讓我…

【橘子分布式】gRPC(番外篇-攔截器)

一、簡介 我們之前其實已經完成了關于grpc的一些基礎用法&#xff0c;實際上還有一些比較相對進階的使用方式。比如&#xff1a; 攔截器&#xff1a;包括客戶端和服務端的攔截器&#xff0c;進而在每一端都可以劃分為流式的攔截器和非流式的攔截器。和以前我們在spring web中的…

深入探索嵌入式仿真教學:以酒精測試儀實驗為例的高效學習實踐

引言&#xff1a;嵌入式技術普及下的教學革新 嵌入式系統作為現代科技的核心驅動力&#xff0c;其教學重要性日益凸顯。然而&#xff0c;傳統硬件實驗面臨設備成本高、維護難、時空受限等挑戰。如何突破這些瓶頸&#xff0c;實現高效、靈活、專業的嵌入式教學&#xff1f;本文將…

三種深度學習模型(GRU、CNN-GRU、貝葉斯優化的CNN-GRU/BO-CNN-GRU)對北半球光伏數據進行時間序列預測

代碼功能 該代碼實現了一個光伏發電量預測系統&#xff0c;采用三種深度學習模型&#xff08;GRU、CNN-GRU、貝葉斯優化的CNN-GRU/BO-CNN-GRU&#xff09;對北半球光伏數據進行時間序列預測對北半球光伏數據進行時間序列預測&#xff0c;并通過多維度評估指標和可視化對比模型性…