C#学习 - 初识类与名称空间
类(class)& 名称空间(namespace)
类是最基础的 C# 类型,是一个数据结构,是构成程序的主体
名称空间以树型结构组织类
using System;
//前面的using就是引用名称空间
//相当于C语言的 #include <...>
namespace ConsoleApp//名称空间
{internal class Program//类{static void Main(string[] args){Console/*类*/.WriteLine("Hello,world!");//当最前面没有引用名称空间时,需要在此段代码前加上名称空间:>System.Console.WriteLine("Hello,world!");//System/*类库*/.Console/*名称空间*/.WriteLine/*类*/}}
}
上段代码中:Program和Console就是类;ConsoleApp就是名称空间
建立了一个叫Program的类放在了一个叫ConsoleApp的名称空间中
using System.Windows;
using System.Windows.Shapes;
using System.IO;namespace WpfApp1
{public partial class MainWindow : Window{public MainWindow(){InitializeComponent();Path//因为 System.IO 和 System.Windows.Shapes 中都有Path,//所以此时使用Path要使用名称空间,如:System.IO.Path 或 System.Windows.Shapes.Path}}
}
类库的引用
类库引用是使用名称空间的物理基础
引用方式:DLL引用、项目引用
DLL引用
又称黑盒引用,无源代码
在解决方案资源管理器 - 项目 - 引用 - 添加引用
一般进行DLL引用时会有参考文档
DLL引用因为没有源代码,如果类库中有错误,无法自己进行修改
namespace M
{class Program{static void Main(string[] args){A/*类库*/.B/*名称空间*/.C/*类*/;}}
}
此处进行DLL引用的程序会对所引用的DLL类库有依赖性;同时程序内的Program和C有依赖关系,C发生错误时,Program也会错误
NuGet
程序目标:打开一个WPF窗口
//先引用 PresentationFramework 类库
namespace ConsoleApp1
{internal class Program{static void Main(string[] args){System.Windows.Window window = new System.Windows.Window();window.ShowDialog();//ShowDialog是类的使用方法}}
}
此时程序会报错,因为此类库还有一些更底层的依赖类库,需要先引用底层类库才能使用,就相当于使用某些模组时需要先加载前置模组
当一个类库的底层类库过多时,引用起来就很麻烦,这时候可以用到NuGet
在解决方案资源管理器 - 项目 - 引用 - 管理NuGet程序包中安装引用所需要的包后,引用中会自动添加NuGet包中的类库,这些添加的类库是由NuGet管理
项目引用
又称白盒引用,有源代码,当程序出现错误时可以直接修改
需要先将项目添加进正在使用的解决方案资源管理器
然后在解决方案资源管理器 - 项目 - 引用 - 添加引用 - 项目 - 解决方案中引用
若一个项目在不同解决方案资源管理器中都有使用时,称为项目重用
创建类库项目
解决方案资源管理器 - 添加新建项目(非新建项) - 选择类库
类库的框架需要与此前项目框架相同
例子:

//Tools.cs
namespace Arithmetic
{public class Tools{public static double Add(double a, double b){return a + b;}public static double Sub(double a, double b){return a - b;}public static double Mul(double a,double b){return a * b;}public static double Div(double a, double b){if(b==0){return double.PositiveInfinity;}else{return a / b;}}}
}
//Program.cs
using System;
using Arithmetic;namespace Calculator
{internal class Program{static void Main(string[] args){double c = Tools.Div(10, 9);Console.WriteLine(c);}}
}
依赖关系
类(或对象)之间的耦合关系
底层类或者类库出现问题,上层的类或类库也会出现关系
写程序时,类应该分类放在对应的类库中;类或类库之间应该尽可能降低依赖。“高内聚,低耦合”
UML(通用建模语言)类图
可以用来展现类与类之间的关系
错误排除
阅读编译器报错
结合MSDN文档与搜索引擎
注:MSDN文档在VS的帮助 - 查看帮助中,需要先在VS Installer - 单个组件中下载Help Viewer
相关文章:
C#学习 - 初识类与名称空间
类(class)& 名称空间(namespace) 类是最基础的 C# 类型,是一个数据结构,是构成程序的主体 名称空间以树型结构组织类 using System; //前面的using就是引用名称空间 //相当于C语言的 #include <..…...
Python爬取电影信息:Ajax介绍、爬取案例实战 + MongoDB存储
Ajax介绍 Ajax(Asynchronous JavaScript and XML)是一种用于在Web应用程序中实现异步通信的技术。它允许在不刷新整个网页的情况下,通过在后台与服务器进行数据交换,实时更新网页的一部分。Ajax的主要特点包括: 异步通…...
JavaScript的面向对象
一、认识对象 1.概述 对象(object)是 JavaScript 语言的核心概念,也是最重要的数据类型。 什么是对象?简单说,对象就是一组“键值对”(key-value)的集合,是一种无序的复合数据集合…...
MybatisPlus 核心功能 条件构造器 自定义SQL Service接口 静态工具
MybatisPlus 快速入门 常见注解 配置_软工菜鸡的博客-CSDN博客 2.核心功能 刚才的案例中都是以id为条件的简单CRUD,一些复杂条件的SQL语句就要用到一些更高级的功能了。 2.1.条件构造器 除了新增以外,修改、删除、查询的SQL语句都需要指定where条件。因此…...
TSN时间敏感网络
目录 时间敏感网络介绍 子协议介绍 时间同步 IEEE802.1AS 调度和流量整形 IEEE802.1Q IEEE802.1Qbv IEEE802.1cr IEEE802.1Qbu IEEE802.1Qch IEEE802.1Qav IEEE802.1Qcc 纠错机制与安全 IEEE802.1Qci IEEE802.1CB IEEE802.1Qca 参考 时间敏感网络介绍 TSN(Tim…...
【2023年数学建模国赛】C题解题思路
第一问 要求分析分析蔬菜各品类及单品销售量的分布规律及相互关系。该问题可以拆分成三个角度进行剖析。 1)各种类蔬菜的销售量分布、蔬菜种类与销售量之间的关系;2)各种类蔬菜的销售量的月份分布、各种类蔬菜销售量与月份之间的相关关系&a…...
5分钟 将“.py”文件转为“.pyd”文件
代码: from distutils.core import setup from distutils.extension import Extension from Cython.Build import cythonize import osfile_list os.listdir("./") extensions [] for file in file_list:if file.endswith(".py") and file !…...
python 入门到精通(一)
文章目录 1.使用pycharm进行第一个程序的编写2.python基础语法篇2.1 常用的值类型2.2 注释2.3 变量2.4 数据类型2.5 数据类型转换2.6 什么是标识符2.7 运算符2.8 字符串扩展2.8.1 字符串拼接2.8.2 字符串格式化2.8.3 格式化的精度控制2.8.4 字符串格式化 - 快速写法2.8.5 字符串…...
AJAX (Asynchronous JavaScript And XML)异步的JavaScript 和 XML
1、概念 Asynchronous JavaScript And XML 异步的JavaScript 和 XML异步和同步:客户端和服务器端相互通信的基础上 同步:客户端必须等待服务端的响应。在等待的期间客户端不能做其他操作。异步:客户端不需要等待服务器端的响应。在服务器…...
华为云云耀云服务器L实例评测|安装Java8环境 配置环境变量 spring项目部署 【!】存在问题未解决
目录 引出安装JDK8环境查看是否有默认jar上传Linux版本的jar包解压压缩包配置环境变量 上传jar包以及运行问题上传Jar包运行控制台开放端口访问失败—见问题记录关闭Jar的方式1.进程kill -92.ctrl c退出 问题记录:【!】未解决各种方式查看端口情况联系工程师最后排查…...
安卓多渠道打包(五)360加固walle多渠道打包
背景: 1、360加固宝,签名收費了,脚本上传加固也针对特定帐号才可实现。 内容 本文将会分享安卓项目中,使用360加固,再用walle签名,产出多渠道加固包的全流程。 环境 win10 jdk11 as2022 gradle7.5 最…...
Jmeter 实现 mqtt 协议压力测试
1. 下载jmeter,解压 https://jmeter.apache.org/download_jmeter.cgi 以 5.4.3 为例,下载地址: https://dlcdn.apache.org//jmeter/binaries/apache-jmeter-5.4.3.zip linux下解压: unzip apache-jmeter-5.4.3.zip 2. 下载m…...
蓝桥杯官网练习题(凑算式)
类似填空题: ①算式900: https://blog.csdn.net/s44Sc21/article/details/132746513?spm1001.2014.3001.5501https://blog.csdn.net/s44Sc21/article/details/132746513?spm1001.2014.3001.5501 ②九宫幻方③七星填数④幻方填空:https:/…...
机器学习实战-系列教程5:手撕线性回归4之非线性回归(项目实战、原理解读、源码解读)
🌈🌈🌈机器学习 实战系列 总目录 本篇文章的代码运行界面均在Pycharm中进行 本篇文章配套的代码资源已经上传 手撕线性回归1之线性回归类的实现 手撕线性回归2之单特征线性回归 手撕线性回归3之多特征线性回归 手撕线性回归4之非线性回归 1…...
【C语言基础】那些你可能不知道的C语言“潜规则”
📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨ 📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 📢:文章若有幸对你有帮助,可点赞 👍…...
android framework之Applicataion启动流程分析(三)
现在再回顾一下Application的启动流程,总的来说,虽然进程的发起是由ATMS服务发起的,但是进程的启动还是由AMS负责,所以需要调用AMS的startProcess()接口完成进程启动流程,AMS要处理的事情很多,它将事务交给…...
使用Scrapy框架集成Selenium实现高效爬虫
引言: 在网络爬虫的开发中,有时候我们需要处理一些JavaScript动态生成的内容或进行一些复杂的操作,这时候传统的基于请求和响应的爬虫框架就显得力不从心了。为了解决这个问题,我们可以使用Scrapy框架集成Selenium来实现高效的爬…...
Maven 和 Gradle 官方文档及相关资料的网址集合
文章目录 官方MavenGradle 笔者MavenGradle 官方 Maven Maven 仓库依赖包官方查询通道:https://mvnrepository.com/ Maven 插件官方文档:https://maven.apache.org/plugins/ 安卓依赖包官方查询通道*:https://maven.google.com/web/ Gra…...
docker概念、安装与卸载
第一章 docker概念 Docker 是一个开源的应用容器引擎。 Docker 诞生于2013年初,基于 Go 语言实现,dotCloud 公司出品,后改名为 Docker Inc。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发…...
elasticsearch访问9200端口 提示需要登陆
项目场景: 提示:这里简述项目相关背景: elasticsearch访问9200端口 提示需要登陆 问题描述 提示:这里描述项目中遇到的问题: 在E:\elasticsearch-8.9.1-windows-x86_64\elasticsearch-8.9.1\bin目录下输入命令 ela…...
【无人机】基于动态反演和扩展状态观测器的无人机鲁棒姿态控制研究附Matlab代码
✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 完整代码获取 定制创新 论文复现点击:Matlab科研工作室🍊个人信条:格物致知,完整Matlab…...
【Oracle数据库指南】第06篇:Oracle DML语句与事务控制——数据操作与ACID特性深度解析
上一篇【第05篇】Oracle子查询与集合操作——嵌套查询与结果合并全解析 下一篇【第07篇】SQL*Plus基础——登录、环境设置与缓冲区操作 摘要 本文全面讲解Oracle DML(数据操作语言)语句,包括INSERT、UPDATE、DELETE和MERGE的详细用法&#x…...
手把手教你ClickHouse(二、Windows下Docker部署与可视化实战)
1. Windows下Docker环境准备 在开始部署ClickHouse之前,我们需要先确保Windows系统已经正确配置Docker环境。这里我推荐使用Docker Desktop for Windows,它提供了图形化界面和完整的容器管理功能。安装过程可能会遇到几个常见坑点,我把自己实…...
taotoken模型广场功能体验与主流模型选型建议
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 taotoken模型广场功能体验与主流模型选型建议 1. 平台入口与模型广场概览 登录Taotoken控制台后,最直观的功能入口之一…...
终极指南:10分钟快速上手Ghidra逆向工程工具安装与配置
终极指南:10分钟快速上手Ghidra逆向工程工具安装与配置 【免费下载链接】ghidra_installer Helper scripts to set up OpenJDK 11 and scale Ghidra for 4K on Ubuntu 18.04 / 18.10 项目地址: https://gitcode.com/gh_mirrors/gh/ghidra_installer 还在为复…...
告别龟速下载!实测对比Axel、Aria2、mwget三大神器,教你选对多线程工具
三大命令行下载神器深度横评:Axel、Aria2与mwget的性能对决 当你在终端里反复输入wget或curl命令,盯着缓慢增长的进度条时,是否想过还有更高效的解决方案?本文将带你深入探索Axel、Aria2和mwget这三款命令行下载加速工具ÿ…...
量子纠错AI预解码器:加速表面码实时处理
1. 量子纠错与实时解码的挑战量子计算的核心难题之一是量子比特的脆弱性。与环境相互作用导致的退相干效应,使得量子信息在极短时间内就会发生不可逆的丢失。表面码(Surface Code)作为最具实用前景的量子纠错方案,通过将逻辑量子比…...
开源项目remote2mac:用Windows远程桌面无缝控制macOS
1. 项目概述:远程桌面连接的另一条路如果你是一名需要在Windows电脑上远程控制macOS设备的开发者、设计师或者运维人员,那么“远程桌面”这个需求对你来说一定不陌生。传统的方案,比如微软的RDP(远程桌面协议)对Window…...
从ShareGPT项目拆解现代全栈开发:Next.js、Serverless与Chrome扩展实战
1. 项目概述与核心价值如果你和我一样,经常在ChatGPT里进行一些天马行空的对话,从构思一部科幻小说的世界观,到一步步推导一个复杂的编程问题,再到让它扮演苏格拉底和你辩论哲学,这些对话记录本身就是宝贵的数字资产。…...
离线AI教育工具开发实战:模型轻量化、边缘计算与五大应用场景
1. 项目概述:当AI导师走进离线课堂“每个学生都值得拥有一位AI导师”——这个想法听起来很美好,但在全球范围内,一个残酷的现实是:稳定、高速的网络连接并非理所当然。在许多乡村学校、资源匮乏的地区,甚至在城市里信号…...
