当前位置: 首页 > news >正文

【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#基础内容不是特别牢靠,理解的不到位&#xff…...

基于Skywalking开发分布式监控(一)

接手为微服务系统搞链路监控项目一年多,也和skywalking打了一年多的交道,也应该有个总结,主要谈一下搭建监控系统遇到的难点和解决方案。 说明: 本文的代码均由本地演示代码替代,非实际代码 为啥选skywalking&#xf…...

高防服务器什么意思

高防服务器什么意思,为什么要用高防服务器,小编为您整理发布高防服务器什么意思的解读。 高防服务器是指具备较高防御能力的服务器,能够抵御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微服务开发平台

采用前后端分离的模式&#xff0c;前端开源两个框架&#xff1a;Sword (基于 React、Ant Design)、Saber (基于 Vue、Element-UI)后端采用SpringCloud全家桶&#xff0c;并同时对其基础组件做了高度的封装&#xff0c;单独开源出一个框架&#xff1a;BladeToolBladeTool已推送至…...

【运维】Ubuntu18.04系统docker方式安装ElasticSearch和kibana

前言 最近需要搭建一套测试环境&#xff0c;用到了ElasticSearch( 简称es)搜索引擎&#xff0c;安装过程有些曲折&#xff0c;记录下来作为经验。 正文 环境 Ubuntu18.04 操作系统Docker Server Version: 20.10.7ElasticSearch Version: 8.5.3Kibana Version: 8.5.3 说明 E…...

五种单例模式

在整个程序中&#xff0c;保持只有一个实例对象&#xff0c;就是单例模式。 单例模式可以减少构建&#xff0c;GC的次数&#xff0c;提升性能&#xff0c;还能减少堆内存的开销。 1. 懒汉式 在需要使用对象的时候&#xff0c;才进行创建 通过private构造方法&#xff0c;确保…...

【ceph】ceph关于清洗数据scrub的参数分析

本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》&#xff1a;python零基础入门学习 《python运维脚本》&#xff1a; python运维脚本实践 《shell》&#xff1a;shell学习 《terraform》持续更新中&#xff1a;terraform_Aws学习零基础入门到最佳实战 《k8…...

自然语言NLP学习

2-7 门控循环单元&#xff08;GRU&#xff09;_哔哩哔哩_bilibili GRU LSTM 双向RNN CNN 卷积神经网络 输入层 转化为向量表示 dropout ppl 标量 在物理学和数学中&#xff0c;标量&#xff08;Scalar&#xff09;是一个只有大小、没有方向的量。它只用一个数值就可以完全…...

js实现填涂画板

文章目录 1实现效果2 实现代码 凑个数&#xff0c;存粹是好玩儿&#xff0c;哈哈... 1实现效果 最上方一栏&#xff1a; 左侧是颜色按钮&#xff0c;点击选中颜色&#xff0c; 中间是功能按钮&#xff0c;重置颜色、清空画板、回退、涂改液&#xff08;填涂色置为白色&#xff…...

springboot农机电招平台源码和论文

随着农机电招行业的不断发展&#xff0c;农机电招在现实生活中的使用和普及&#xff0c;农机电招行业成为近年内出现的一个新行业&#xff0c;并且能够成为大群众广为认可和接受的行为和选择。设计农机电招平台的目的就是借助计算机让复杂的销售操作变简单&#xff0c;变高效。…...

TensorFlow 深度学习 开发环境搭建 全教程

PyTorch 深度学习 开发环境搭建 全教程 TensorFlow 深度学习 开发环境搭建 全教程 1、指定清华源命令 -i https://pypi.tuna.tsinghua.edu.cn/simple2、conda安装 这是AI开发环境的全家桶&#xff0c;官网下载链接Anaconda | Start Coding Immediately 尽量不要选择太新版本…...

Qt —— QCharts之曲线示波器(附源码)

示例效果 介绍 Qt5.7 版本后 Qt Charts 的发布。Qt Charts可以创建时尚的、交互式的、以数据为中心的用户界面。Qt Charts使用Qt Charts来简化集成。图表组件可以用作或对象或QML类型。 该类管理不同类型的系列和其他图表相关对象(如图例和轴)的图形表示形式。是一个可以在 .…...

【秒剪】如何更换视频画幅比例以及画面背景?

Step1&#xff1a;点击上方显示的画幅比例 Step2&#xff1a;在下方选择合适的视频画幅或更换画面背景 Step3&#xff1a;点击上方【填充方式】 Step4&#xff1a;选择合适的填充方式即可 Step5&#xff1a;点击这里即可自定义视频背景...

HarmonyOS鸿蒙学习笔记(23)监听Wifi状态变化

监听Wifi状态变化 前言创建接收状态变化的Bean对象创建订阅者和订阅事件参考资料&#xff1a; 前言 本篇博文通过动态订阅公共事件来说明怎么使用HarmonyOS监听Wifi状态的变化。关于动态订阅公共事件的概念&#xff0c;官网有详细说明&#xff0c;再次就不在赘述。博文相关项目…...

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 中.但是也可以独立安装&#xff0c;服务Pytorch等其他的框架 可以常常用来观察训练过程中每一阶段如何输出的 安装pip install tensorboard启动tensorboard --logdir<d…...

基于卡尔曼滤波的平面轨迹优化

文章目录 概要卡尔曼滤波代码主函数代码CMakeLists.txt概要 在进行目标跟踪时,算法实时测量得到的目标平面位置,是具有误差的,连续观测,所形成的轨迹如下图所示,需要对其进行噪声滤除。这篇博客将使用卡尔曼滤波,对轨迹进行优化。 优化的结果为黄色线。 卡尔曼滤波代码…...

GBASE南大通用分享如何更新嵌套的集合

如果您想要更新集合的集合&#xff0c;则必须声明游标来访问外层的集合&#xff0c;然后声明嵌套的游标来 访问内层的集合。 例如&#xff0c;假设 manager 表有一附加的列 scores&#xff0c;它包含一其元素类型为整数的 MULTISET 的 LIST&#xff0c;如下图所示。 更新集合…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻

在如今就业市场竞争日益激烈的背景下&#xff0c;越来越多的求职者将目光投向了日本及中日双语岗位。但是&#xff0c;一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧&#xff1f;面对生疏的日语交流环境&#xff0c;即便提前恶补了…...

【杂谈】-递归进化:人工智能的自我改进与监管挑战

递归进化&#xff1a;人工智能的自我改进与监管挑战 文章目录 递归进化&#xff1a;人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管&#xff1f;3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例

使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件&#xff0c;常用于在两个集合之间进行数据转移&#xff0c;如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model&#xff1a;绑定右侧列表的值&…...

C++ 基础特性深度解析

目录 引言 一、命名空间&#xff08;namespace&#xff09; C 中的命名空间​ 与 C 语言的对比​ 二、缺省参数​ C 中的缺省参数​ 与 C 语言的对比​ 三、引用&#xff08;reference&#xff09;​ C 中的引用​ 与 C 语言的对比​ 四、inline&#xff08;内联函数…...

ArcGIS Pro制作水平横向图例+多级标注

今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作&#xff1a;ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等&#xff08;ArcGIS出图图例8大技巧&#xff09;&#xff0c;那这次我们看看ArcGIS Pro如何更加快捷的操作。…...

MySQL账号权限管理指南:安全创建账户与精细授权技巧

在MySQL数据库管理中&#xff0c;合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号&#xff1f; 最小权限原则&#xf…...

Fabric V2.5 通用溯源系统——增加图片上传与下载功能

fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...

【C++特殊工具与技术】优化内存分配(一):C++中的内存分配

目录 一、C 内存的基本概念​ 1.1 内存的物理与逻辑结构​ 1.2 C 程序的内存区域划分​ 二、栈内存分配​ 2.1 栈内存的特点​ 2.2 栈内存分配示例​ 三、堆内存分配​ 3.1 new和delete操作符​ 4.2 内存泄漏与悬空指针问题​ 4.3 new和delete的重载​ 四、智能指针…...

JavaScript 数据类型详解

JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型&#xff08;Primitive&#xff09; 和 对象类型&#xff08;Object&#xff09; 两大类&#xff0c;共 8 种&#xff08;ES11&#xff09;&#xff1a; 一、原始类型&#xff08;7种&#xff09; 1. undefined 定…...

Web后端基础(基础知识)

BS架构&#xff1a;Browser/Server&#xff0c;浏览器/服务器架构模式。客户端只需要浏览器&#xff0c;应用程序的逻辑和数据都存储在服务端。 优点&#xff1a;维护方便缺点&#xff1a;体验一般 CS架构&#xff1a;Client/Server&#xff0c;客户端/服务器架构模式。需要单独…...