文章目录

  • 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;并通过多维度评估指标和可视化对比模型性…