C#学习 - 初识类与名称空间

news2024/11/28 14:30:17

类(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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/992326.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据驱动的数字营销与消费者运营

引言&#xff1a;基于海洋馆文旅企业在推广宣传中&#xff0c;如何通过指标体系量化分析广告收益对业务带来的收益价值的思考&#xff1f; 第一部分:前链路引流投放的策略与实战 1.1 动态广告的实现: 偶然与必然 动态广告是一种基于实时数据和用户行为的广告形式&#xff0c;它…

MJ绘制「酱香拿铁」可爱壁纸;LLM产品团队招聘预告;FlowGPT提示词大赛第3季;台大深度学习音乐分析与生成最新课程 | ShowMeAI日报

&#x1f440;日报&周刊合集 | &#x1f3a1;生产力工具与行业应用大全 | &#x1f9e1; 点赞关注评论拜托啦&#xff01; &#x1f525; 蹭「酱香拿铁」热点的Midjouney绘图创意&#xff0c;好可爱的手机壁纸 小红书作者 美学孤诣 使用 Midjourney 制作了「上个茅班」的手…

【高德地图】根据经纬度多边形的绘制(可绘制区域以及任意图形)

官方示例 https://lbs.amap.com/demo/jsapi-v2/example/overlayers/polygon-draw <!doctype html> <html> <head><meta charset"utf-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name&quo…

数据结构-图-最短路径算法(迪杰斯特拉算法,弗洛伊德算法)

dijkstra算法 视频推荐链接 弗洛伊德算法 视频链接推荐

『SpringBoot 源码分析』run() 方法执行流程:(4)刷新应用上下文-处理 @Import 注解

『SpringBoot 源码分析』run() 方法执行流程&#xff1a;&#xff08;4&#xff09;刷新应用上下文-处理 Import 注解 基于 2.2.9.RELEASE问题&#xff1a;当方法进行了注释标记之后&#xff0c;springboot 又是怎么注入到容器中并创建类呢&#xff1f; 首先创建测试主程序 …

1.5 空间中的平面与直线

空间中的平面和直线 知识点1 平面方程 1.平面的法向量与法式 定义1 若向量n 垂直与平面N&#xff0c;则称向量n为平面N的法向量。 设一平面通过一直点 M 0 ( x 0 , y 0 , z 0 ) M_0(x_0,y_0,z_0) M0​(x0​,y0​,z0​)求垂直于非零向量 n ⃗ \vec{n} n (A,B,C),求改平面N的…

geohash学习

geohash编解码 import ("github.com/mmcloughlin/geohash" )func Test_Demo(t *testing.T) {// 编码经纬度到 geohash 字符串lat, lon : 40.7128, -74.0060 // 纽约市的位置geoHash : geohash.Encode(lat, lon) // geohash 字符串fmt.Println(geoHash) …

浅谈Http协议、TCP协议(转载)

TCP标志位,有6种标示&#xff1a;SYN(synchronous建立联机) &#xff0c;ACK(acknowledgement 确认) &#xff0c;PSH(push传送)&#xff0c;FIN(finish结束) &#xff0c;RST(reset重置)&#xff0c; URG(urgent紧急) Sequence number(顺序号码) &#xff0c;Acknowledge num…

202330读书笔记|《中国百年文学经典桥梁书(全8册)》——故乡,匆匆,春,背影,白鹅,百草园

202330读书笔记|《中国百年文学经典桥梁书&#xff08;全8册&#xff09;》——故乡&#xff0c;匆匆&#xff0c;春&#xff0c;背影&#xff0c;白鹅&#xff0c;百草园 《中国百年文学经典桥梁书&#xff08;全8册&#xff09;》作者朱自清&#xff0c;鲁迅等。很多都是小学…

文生图模型进化简史和生成能力比较——艺术肖像篇

很久没有更新文章&#xff0c;最近真的太忙啦&#xff0c;在T2I领域&#xff0c;学习速度真的赶不上进化速度&#xff01;每天都有无数新模型、新插件、新玩法涌现。玩得太上瘾啦。 上月初我去参加我硕士专业的夏季烧烤大趴&#xff0c;跟我的论文导师重逢&#xff08;好多年没…

Java 中如何实现序列化?

什么是序列化&#xff1f;Java 中如何实现序列化&#xff1f; 在 Java 编程中&#xff0c;序列化是一种将对象转换为字节流的过程&#xff0c;可以将对象在网络中传输或者保存到磁盘中。序列化可以将对象的状态保存下来&#xff0c;以便在需要时重新创建对象。Java 中提供了一…

9.9|day 2|整数拆分|不同的二叉搜索树

整数拆分&#xff1a; class Solution {public int integerBreak(int n) {int[] dp new int[n1];dp[2] 1;for(int i 3;i<n;i){for(int j 1;j<i-j;j){dp[i] Math.max(dp[i],Math.max(j*dp[i-j],j*(i-j)));}}//这里感觉要注意的就是j是我们要拆分的数&#xff0c;所…

提升敲代码效率:SublimeLinter+iverilog实现代码语法检查

前言 SublimeLinter是sublime的语法检查框架&#xff0c;安装这个插件是实现语法检查的前提&#xff0c;在安装了这个插件后&#xff0c;我们才可以安装使用特定语言的语法检查插件&#xff0c;比如对于verilog而言&#xff0c;有如下几种语法检查插件&#xff1a; SublimeLi…

如何预防CSRF攻击

CSRF 攻击的防范措施 CSRF&#xff08;Cross-Site Request Forgery&#xff09;攻击是一种常见的 Web 攻击&#xff0c;即攻击者在用户不知情的情况下&#xff0c;利用用户已登录的身份&#xff0c;向目标网站发送恶意请求&#xff0c;从而实现攻击目的。本文将介绍 CSRF 攻击…

5. 状态

一、状态是什么 由一个任务维护&#xff0c;并且用来计算某个结果的所有数据&#xff0c;都属于这个任务的状态可以认为状态就是一个本地变量&#xff0c;可以被任务的业务逻辑访问Flink 会进行状态管理&#xff0c;包括状态一致性、故障处理以及高效存储和访问&#xff0c;以…

go通过pprof定位groutine泄漏

日常开发中除了会出现Panic、ErrorInfo等通过日志很容易捕捉到的错误&#xff0c;还会出现内存泄漏、CPU激增等日志难以捕捉的问题。今天小老虎就给大家介绍下如何使用pprof去捕捉内存、CPU这些日志难以排查到的问题。 pprof的访问 pprof是Golang的性能分析工具&#xff0c;可…

Inno Setup 打包的文件以管理员权限运行

在 Inno Setup 安装目录中找到文件 SetupLdr.e32&#xff0c;用软件 ResourceHacker 打开。如下图&#xff0c;点开清单&#xff0c;找到 <requestedExecutionLevel level"asInvoker" uiAccess"false"/></requestedPrivileges>改为 <requ…

Nomad系列-Nomad网络模式

系列文章 Nomad 系列文章 概述 Nomad 的网络和 Docker 的也有很大不同, 和 K8s 的有很大不同. 另外, Nomad 不同版本(Nomad 1.3 版本前后)或是否集成 Consul 及 CNI 等不同组件也会导致网络模式各不相同. 本文详细梳理一下 Nomad 的主要几种网络模式 在Nomad 1.3发布之前&a…

CSS_文字渐变

/* 定义渐变背景样式 */ .gradient-text {background-image: linear-gradient(to right, #ff0000, #00ff00); /* 渐变色范围 */background-clip: text; /* 应用渐变背景到文本 */-webkit-background-clip: text; /* Safari 和 Chrome 的前缀 */color: transparent; /* 将文本颜…

ADS1115 模拟IIC

ADS1115是16位ADC&#xff0c;基准源内部可选&#xff0c;PGA 可提供从 256mV 到 6.144V 的输入范围。 地址可由ADDR引脚决定&#xff0c;一般接地&#xff0c;地址为0x90 写寄存器地址为0x90&#xff0c;读寄存器地址为0x91 ADS1115有4个控制寄存器&#xff0c;0x00,0x01,0x0…