【C#】基础巩固
最近写代码的时候各种灵感勃发,有了灵感,就该实现了,可是,实现起来有些不流畅,总是有这样,那样的卡壳,总结下来发现了几个问题。
1、C#基础内容不是特别牢靠,理解的不到位,导致自己想出来了一些内容,但是无法使用正确的C#代码实现,导致灵感无法完美实现。
2、灵感有些天马行空,没有见过足够多的案例,也没有阅读过足够多的代码,导致自己的想法在落地实现的过程中有些偏离了方向。
结合以上两个问题,于是有了这样一篇文章,代表着我要从头开始一点一点的梳理基础。这篇文章是分享篇,把自己学习过程中的点滴记录下来(PS:都说最好的学习方式是费曼,也就是教别人学习,分享出来也是一种费曼,尤其是敲字敲下来,需要思考的过程,这样更加巩固了)。
我是跟着菜鸟教程从头到尾去学习的,然后会跟着里面的代码案例去理解哈。
目录
1、基础--hello world
2、代码解析
1、C#代码的基础了解
2、工具类----Console
3、让电脑说hello world
4、一个工具的多种用法
5、尝试十八般武艺
1、基础--hello world
首先就是基础中的基础---hello world
using System;
namespace HelloWorldApplication
{class HelloWorld{static void Main(string[] args){/* 我的第一个 C# 程序*/Console.WriteLine("Hello World");Console.ReadKey();}}
}
看完菜鸟教程的说法,我现在又有了一番别样的理解:我们可以把代码当作是一台机器,机器运行需要各种零件,也需要使用机器的目的,同时也需要我们有原材料。
再简单点说:原材料----放入机器----产出内容。
然后,我们来看这篇代码。
目的是什么? 让我们的电脑程序说hello world。
原材料是什么? C#代码。
机器是什么? 我们运行程序的软件
那么我们要想知道怎么达成目标,就要了解这三者。
其中代表机器的软件,这里我就不多说了,大家可以去看网上的软件安装和使用教程,这里只说C#语言理论基础,而且会围绕着hello world这句话开始解析。
2、代码解析
1、C#代码的基础了解
原材料C#代码我们就要仔细了解一下了。

第一行 using System。using 代表的是引用,引用什么呢,引用组件库,这里System就是一个组件库,当然我们可以抽象的理解为一个工具箱,而System则是C#语言为我们准备的用来编辑系统的一个组件库。
using 后面跟随的就是各种各样的工具箱(组件库),里面放满了各种工具。就像我们平常修电灯泡,修电视机,修各类东西得时候需要先找工具箱一样,我们去写代码的时候第一步就是去using各种组件库工具箱。
如果想要使用C#语言中提前给我们准备好的工具的话,我们必须先把这个工具箱拿出来,而使用using就代表了我们告诉电脑,我们拿出来了system工具箱。
这里我们使用System就代表我们要用这个工具箱中的一个工具,那我们用到的究竟是哪个工具呢??
这里,我们回到整篇代码中,把鼠标放在屏幕中间的Console上(如下图位置1的字母上。这里建议自己在软件内敲一遍之后跟着操作看一下),这样就能看到如下图出现的一行字,class System.Console,显示如下图位置2的地方。

这句话代表什么意思呢?我们可以粗略的理解为Console这个工具是属于System工具箱的。而System和Console中间的点就代表的是路径,就像我们打开文件管理器中的那个 \ 符号一样。

这里的打包文件是属于 Program Files文件夹路径下的一个文件夹。
2、工具类----Console
而这里的Console则是属于System工具箱中的一个工具,用专业术语来说,就是Console是属于System的一个类,作用是控制电脑的输入和输出。(这里面类也是专业术语,就像鸟类,虫类一样是某一个种类。)
这样我们就明白了他们的关系,using System是使用了一个叫做System的工具箱,而我们在下面的代码中,使用了一个叫做Console的管理输入和输出的工具,它是从System中拿出来的。
那么,这里我们使用Console工具的作用是什么呢?
我们接着往下看,看我们整篇代码的中间部分。

上图是我们的原代码,刚才我们说到了一个点,就是System和Console中间有一个点,代表Console是从System中拿到的。
那么这里,我们看到,在Console的后面还有一个点,点的后面是WriteLine外带一个括号和一句话,那么是不是意味着,我们可以理解WriteLine也是从Console中拿出来的呢?
那么我们敲击代码的时候,可以看到一个现象,就是当我们Console敲出来之后,会出现一个下拉列表,如下图:

这个下拉列表简单来说,就是Console这个工具所拥有的方法。
怎么理解呢?我们平常用到的工具非常多,像是螺丝刀,扳手,钳子等等,他们都有自己的使用方式和材质。而这里的下拉列表就是代表了Console这个工具的”使用方式“和”材质“,这里我们不过多研究。
3、让电脑说hello world
当我们打出来点之后,会自动选中第一个WriteLine,我们敲下回车之后,这个单词就会自动输入屏幕上。但是如果我们想要一句完整的代码,则需要在后面加上一对括号,同时需要在括号后面加上分号,并且需要使用英文输入法才能算作一句代码,下图为完整的一行代码。

WriteLine,看到这个单词的时候,会英语的一眼就能认出来了,这个单词是写的意思,只不过后面加上了一个Line,而在C#代码中,它的意思是将数据写入控制台并自动换行。
但是,我们的目的是让代码输出一句Hello world,只是这个功能是不够的,还需要我们把想要输出的内容让代码帮我们实现。
我们的WriteLine后面的括号可以不放任何东西,代表自动换行。
但是我们也可以在括号中的双引号内输入任意字符(英文,汉字,符号,个别符号例外),这样就代表了我们想要把双引号内的指定内容输出并换行。

我们在括号中输入"Hello World!",然后按下F5,这样就会出现一个弹窗,里面会有一句话:"Hello World!",这就代表着我们完成了第一句代码的输出,当然,出现的弹窗我们可以直接关闭,就能回到编辑模式了。
简单回顾一下,想要使用C#语言让电脑说Hello World!,首先找到管理输入输出的功能模块,然后找到里面负责输出的那一个功能,然后让它输出Hello World!"就行了。
先 using System ,然后在Main下图的花括号中输入Console.WriteLine("Hello World");,最后F5执行就可以了。

这里,如果只是按照我说的做,窗口可以一闪就过了,那么我们在Console.WriteLine("Hello World");的这句话后面添加一句话Console.ReadKey();,就可以让我们的窗口暂停在我们的显示器界面上,让我们看到最后结果。
Console.ReadKey();这句话的意思暂时不解释,大家可以接着往下看。
4、一个工具的多种用法
不知道大家发现没有,没有任何内容和输入内容的两个方式,效果完全不一样,这是为什么呢?

其实,这样就涉及到一个概念:一个工具多种用法。
这里我们知道Console是一个类,它是负责电脑的输入输出。而WriteLine是这个类中的一个使用方式,专业术语叫做方法。
但是,这个方法有很多种用法,就像我们的扳手一样,可以用来拧螺丝,也可以用来敲钉子,也可以用来上演武术(开个玩笑)。
我们的方法也有十八般武艺,如下图:

我们可以看到,在途中用红框框选中的地方,红框1是鼠标放置的位置,红框2则是当鼠标放上去之后,会显示的内容。
我们在图中可以看到,这句话代表着WriteLine是来源于Console,而括号中间的string value代表着我们可以在括号里面放置任何带双引号的文字内容,最后的(+18多个重载)则是代表我们的WriteLine会根据括号内放置的内容不同,有十八种用途(PS:还真是十八般武艺)。
说到十八般武艺了,可能扳手啥的,我们能看到实物,可以多尝试几次,那么代码我们怎么知道用途,怎么尝试呢?
5、尝试十八般武艺
这里有一个有意思的方式,会让我们知道它都有哪些十八般武艺,如下图:

可以看到,这里的WriteLine单词下面有一条横线,这是我按下了Ctrl键的同时,把鼠标左键放在WirteLine上,当我点下左键之后,我们就会跳到这个单词的说明书内,如下图:

里面密密麻麻的一串英文,看着挺复杂,但也挺简单,因为这里就是这个单词WriteLine的内置说明书。
C#语言怕你学不会,然后给你的都有内置的说明书,每个单词都是这样。如果不会英文也好办,摘要就是单词的说明,我们直接把摘要里面的英文复制粘贴到翻译里面,结果就是这样咯:

看完这个之后我们可以看到有很多类似的方式:

刚才我们从头到尾的了解了WriteLine的两个使用方式,一个是只有括号的,是换行,第二个是加入Hello World!的,输出了Hello World!。
那么我们尝试一下上面图中的其他方式,不会?复制摘要粘贴到翻译里面,了解了是什么意思再尝试一下吧。
有感而发的一个分享理解的帖子,大家可以看一下,有什么不对的地方可以留言哈。。
相关文章:
【C#】基础巩固
最近写代码的时候各种灵感勃发,有了灵感,就该实现了,可是,实现起来有些不流畅,总是有这样,那样的卡壳,总结下来发现了几个问题。 1、C#基础内容不是特别牢靠,理解的不到位ÿ…...
基于Skywalking开发分布式监控(一)
接手为微服务系统搞链路监控项目一年多,也和skywalking打了一年多的交道,也应该有个总结,主要谈一下搭建监控系统遇到的难点和解决方案。 说明: 本文的代码均由本地演示代码替代,非实际代码 为啥选skywalking…...
高防服务器什么意思
高防服务器什么意思,为什么要用高防服务器,小编为您整理发布高防服务器什么意思的解读。 高防服务器是指具备较高防御能力的服务器,能够抵御DDoS/CC等网络攻击。 高防服务器通常用于保护游戏、APP、金融、电商等业务,这些领域因为…...
C/C++ - Auto Reference
目录 auto Reference auto 当使用auto关键字声明变量时,C编译器会根据变量的初始化表达式推断出变量的类型。 自动类型推断:auto关键字用于自动推断变量的类型,使得变量的类型可以根据初始化表达式进行推导。 初始化表达式&#x…...
springboot项目快速引入knife4j
引入依赖 <dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-starter</artifactId><version>3.0.3</version> </dependency>knife4j配置文件 basePackage改为自己存放接口的包名 /*** Kn…...
SpringBlade微服务开发平台
采用前后端分离的模式,前端开源两个框架:Sword (基于 React、Ant Design)、Saber (基于 Vue、Element-UI)后端采用SpringCloud全家桶,并同时对其基础组件做了高度的封装,单独开源出一个框架:BladeToolBladeTool已推送至…...
【运维】Ubuntu18.04系统docker方式安装ElasticSearch和kibana
前言 最近需要搭建一套测试环境,用到了ElasticSearch( 简称es)搜索引擎,安装过程有些曲折,记录下来作为经验。 正文 环境 Ubuntu18.04 操作系统Docker Server Version: 20.10.7ElasticSearch Version: 8.5.3Kibana Version: 8.5.3 说明 E…...
五种单例模式
在整个程序中,保持只有一个实例对象,就是单例模式。 单例模式可以减少构建,GC的次数,提升性能,还能减少堆内存的开销。 1. 懒汉式 在需要使用对象的时候,才进行创建 通过private构造方法,确保…...
【ceph】ceph关于清洗数据scrub的参数分析
本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》:python零基础入门学习 《python运维脚本》: python运维脚本实践 《shell》:shell学习 《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战 《k8…...
自然语言NLP学习
2-7 门控循环单元(GRU)_哔哩哔哩_bilibili GRU LSTM 双向RNN CNN 卷积神经网络 输入层 转化为向量表示 dropout ppl 标量 在物理学和数学中,标量(Scalar)是一个只有大小、没有方向的量。它只用一个数值就可以完全…...
js实现填涂画板
文章目录 1实现效果2 实现代码 凑个数,存粹是好玩儿,哈哈... 1实现效果 最上方一栏: 左侧是颜色按钮,点击选中颜色, 中间是功能按钮,重置颜色、清空画板、回退、涂改液(填涂色置为白色ÿ…...
springboot农机电招平台源码和论文
随着农机电招行业的不断发展,农机电招在现实生活中的使用和普及,农机电招行业成为近年内出现的一个新行业,并且能够成为大群众广为认可和接受的行为和选择。设计农机电招平台的目的就是借助计算机让复杂的销售操作变简单,变高效。…...
TensorFlow 深度学习 开发环境搭建 全教程
PyTorch 深度学习 开发环境搭建 全教程 TensorFlow 深度学习 开发环境搭建 全教程 1、指定清华源命令 -i https://pypi.tuna.tsinghua.edu.cn/simple2、conda安装 这是AI开发环境的全家桶,官网下载链接Anaconda | Start Coding Immediately 尽量不要选择太新版本…...
Qt —— QCharts之曲线示波器(附源码)
示例效果 介绍 Qt5.7 版本后 Qt Charts 的发布。Qt Charts可以创建时尚的、交互式的、以数据为中心的用户界面。Qt Charts使用Qt Charts来简化集成。图表组件可以用作或对象或QML类型。 该类管理不同类型的系列和其他图表相关对象(如图例和轴)的图形表示形式。是一个可以在 .…...
【秒剪】如何更换视频画幅比例以及画面背景?
Step1:点击上方显示的画幅比例 Step2:在下方选择合适的视频画幅或更换画面背景 Step3:点击上方【填充方式】 Step4:选择合适的填充方式即可 Step5:点击这里即可自定义视频背景...
HarmonyOS鸿蒙学习笔记(23)监听Wifi状态变化
监听Wifi状态变化 前言创建接收状态变化的Bean对象创建订阅者和订阅事件参考资料: 前言 本篇博文通过动态订阅公共事件来说明怎么使用HarmonyOS监听Wifi状态的变化。关于动态订阅公共事件的概念,官网有详细说明,再次就不在赘述。博文相关项目…...
mac 安装配置oh-my-zsh
1. 安装brew /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)" 按照步骤安装即可 安装完成查看版本 brew -v 2. 安装zsh brew install zsh 查看版本 zsh --version 3. 安装oh-my-zsh github官网链…...
[pytorch入门] 2. tensorboard
tensorboard简介 TensorBoard 是一组用于数据可视化的工具。它包含在流行的开源机器学习库 Tensorflow 中.但是也可以独立安装,服务Pytorch等其他的框架 可以常常用来观察训练过程中每一阶段如何输出的 安装pip install tensorboard启动tensorboard --logdir<d…...
基于卡尔曼滤波的平面轨迹优化
文章目录 概要卡尔曼滤波代码主函数代码CMakeLists.txt概要 在进行目标跟踪时,算法实时测量得到的目标平面位置,是具有误差的,连续观测,所形成的轨迹如下图所示,需要对其进行噪声滤除。这篇博客将使用卡尔曼滤波,对轨迹进行优化。 优化的结果为黄色线。 卡尔曼滤波代码…...
GBASE南大通用分享如何更新嵌套的集合
如果您想要更新集合的集合,则必须声明游标来访问外层的集合,然后声明嵌套的游标来 访问内层的集合。 例如,假设 manager 表有一附加的列 scores,它包含一其元素类型为整数的 MULTISET 的 LIST,如下图所示。 更新集合…...
RocketMQ延迟消息机制
两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数,对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后…...
CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型
CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...
Java如何权衡是使用无序的数组还是有序的数组
在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...
服务器硬防的应用场景都有哪些?
服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...
《C++ 模板》
目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板,就像一个模具,里面可以将不同类型的材料做成一个形状,其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式:templa…...
基于Java+MySQL实现(GUI)客户管理系统
客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息,对客户进行统一管理,可以把所有客户信息录入系统,进行维护和统计功能。可通过文件的方式保存相关录入数据,对…...
wpf在image控件上快速显示内存图像
wpf在image控件上快速显示内存图像https://www.cnblogs.com/haodafeng/p/10431387.html 如果你在寻找能够快速在image控件刷新大图像(比如分辨率3000*3000的图像)的办法,尤其是想把内存中的裸数据(只有图像的数据,不包…...
华为OD机试-最短木板长度-二分法(A卷,100分)
此题是一个最大化最小值的典型例题, 因为搜索范围是有界的,上界最大木板长度补充的全部木料长度,下界最小木板长度; 即left0,right10^6; 我们可以设置一个候选值x(mid),将木板的长度全部都补充到x,如果成功…...
沙箱虚拟化技术虚拟机容器之间的关系详解
问题 沙箱、虚拟化、容器三者分开一一介绍的话我知道他们各自都是什么东西,但是如果把三者放在一起,它们之间到底什么关系?又有什么联系呢?我不是很明白!!! 就比如说: 沙箱&#…...
高考志愿填报管理系统---开发介绍
高考志愿填报管理系统是一款专为教育机构、学校和教师设计的学生信息管理和志愿填报辅助平台。系统基于Django框架开发,采用现代化的Web技术,为教育工作者提供高效、安全、便捷的学生管理解决方案。 ## 📋 系统概述 ### 🎯 系统定…...
