C# 学习之路(C# 编程概述)

news2025/8/12 2:18:57

C# 学习之路(C# 编程概述)


前记:C# 学习之路,是我跟着 C# 图解教程(第五版) 学习的笔记,每一章都会有一篇笔记发出,小标题会对应书本的章节标题。

.NET 6 和之前的版本相比在顶级语句方面有很大的变化,如果不知道有不清楚,可看这篇博客:在 .NET 6 中 C# 控制台应用模板生成的顶级语句变化

  • 初识 C# 程序

using System; //告诉编译器这个程序需要使用 System 命名空间的类型

namespace chapter3 // 声明一个名为 chapter3 的命名空间
{
    class Program // 声明一个名为 Program 的类
    {
        static void Main() // 声明一个 Main 方法作为 Program 的成员
        {
            Console.WriteLine("Hello, World!"); // 在终端输出 Hello, World!
            // 这一条语句使用命名空间 System 中一个名为 Console 的类中的 WriteLine 方法将信息显示在终端上。
        }
    }
}

C# 程序由一个或多个类型声明组成,程序中的类型可以以任何顺序声明。

命名空间是与某个名称相关联的一组类型声明。

  • 标识符

标识符是一种用来命名变量、方法、参数的字符串。

  1. 标识符的首字母可以是 英文字母(a-z)(A-Z)下划线(_)@

  2. 数字不能放在首位

  3. @ 只能放在首位(不推荐使用)

标识符区分大小,一般采用 驼峰式命名规则,例如:TotalCycleCount

  • 关键字

关键字是用来定义 C# 语言的字符串记号。

  1. 关键字不能被用作标识符,除非以 @ 字符开头
  2. 所有的 C# 关键字全部由小写字母组成
  3. 关键字中有一类叫做 上下文关键字上下文关键字是仅在特定的语言结构中充当关键字。关键字与上下文关键字的区别在于,关键字不能被用作标识符,而上下文关键字可以在代码的某些位置被用作标识符

图片来自:微软 C# 指南

在这里插入图片描述

在这里插入图片描述

  • Main 程序的起始点

每一个 C# 程序必须有一个类带有 Main 方法(函数)(.NET 6.0 中也有 Main 方法,只是被隐藏了,可看博客:在 .NET 6 中 C# 控制台应用模板生成的顶级语句变化)

  • Main 首字母必须大写
  • 语句

C# 的语句和 C、C++ 的语句非常类似。

块:一个由成对大括号包围的 0 条或多条语句的序列,在语法上相当于一条语句。如下所示

{
    ......
}
  • 从程序中输出文本

控制台窗口是一种简单的命令提示窗口,允许程序显示文本并从键盘接收输入。 BCL(Base Class Library,基类库)提供一个名为 Console 的类(在 System 命名空间中),该类包含了将数据输入和输出到控制台窗口的方法。

// Write 是 Console 类的成员,把文本字符串发送到程序的控制台窗口
// Write 不会换行
Console.Write("This is trivial text.");
Console.Write("This is trivial text.");
// 输出为
//This is trivial text.This is trivial text.
// WriteLine 也是 Console 类的成员,功能和 Write 相同,但会在每个输出字符串的结尾添加换行
Console.WriteLine("This is trivial text.");
Console.WriteLine("This is trivial text.");
// 输出为
//This is trivial text.
//This is trivial text.
  • 格式字符串

WriteWriteLine 语句的常规新式中可以有一个以上的参数。

  1. 如果不止一个参数,参数之间用逗号分隔

  2. 第一个参数必须总是字符串,称为格式字符串。格式字符串可以包含替代标记

    2.1 替代标记在格式字符串中标出位置,在输出串中该位置将用一个值来替代

    2.2 替代标记由一个整数及括住它的一对大括号组成,其中整数就是替换值的数字位置,跟着格式字符串的参数称为替换值,编号从 0 开始

语法如下:

Console.WriteLine(格式字符串(含替代标记),替代值0,替代值1,......);

Console.WriteLine("Two sample integers are {0} and {1}.", 3, 6);
// 双引号包含的为 格式字符串 ,{0} 和 {1} 为替代标记,3 和 6 为替换值

C# 6.0 引入了一种字符串插值语法,通过直接在替代标记内插入变量名实现。

实际上,替代标记告诉编译器这个变量名将被视为一个变量,而不是字符串字面量,前提就是在字符串前面加上 $ 符号。

int val1 = 3;
int val2 = 6;
Console.WriteLine("Two sample integers are {val1} and {val2}.");
  • 多重标记和值

在 C# 中,可以使用任意数量的替代标记和任意数量的值。

  1. 值可以以任何顺序使用
  2. 只可以在格式字符串中替换任意次
  3. 标记不能试图引用超出替换列表长度以外位置的值。如果引用,不会产生编译错误,但是会产生运行时错误
Console.WriteLine("Three integers are {1}, {0} and {1}.", 3, 6);
// 运行时错误
Console.WriteLine("Three integers are {1}, {0} and {2}.", 3, 6);
// 位置2 不存在

在这里插入图片描述

  • 格式化数字字符串

很多的时候,我们更希望以一种更为合适的格式将数字本文字符串输出。于是,就有了格式化字符串

Console.WriteLine("The value: {0}", 500); 
Console.WriteLine("The value: {0:C}", 500); // 格式化为货币

// 输出
//The value: 500
//The value: ¥500.00

两条语句的区别在于,格式项以格式说明符包含了额外的信息。大括号内的格式声明符的语法由三个字段组成:索引号对齐说明符格式字段。语法如下:

{index,alignment:format}

index:必需,指定列表中的某一项

alignment:可选(对其说明符),指定字段宽度,以及左对齐还是右对齐

:format:可选(格式字段),指定项的格式

  1. 对齐说明符:对齐说明符表示字段的最小宽度。

    1.1 可以是一个正整数(右对齐),也可以是一个负整数(左对齐)。

    1.2 使用逗号来与索引号分离

    Console.WriteLine("|{0, 10}|",500);
    Console.WriteLine("|{0, -10}|",500);
    // 输出
    |       500|
    |500       |
    
  2. 格式字段:指定数字应该以哪种新式表示。

    2.1 冒号后必须紧跟着格式说明符,中间不能有空格

    2.2 格式说明符是一个字符字符

    2.3 精度说明符是可选的

    A:xx

    A:表示格式说明符

    xx:精度说明符(可选),由1~2个数字组成

    Console.WriteLine("{0:F4}", 12.345678);
    // 保留小数点后 4 位
    // 12.3457
    
  • 标准数字格式说明符
格式说明符“属性”说明
“C”或“c”货币结果:货币值。 受以下类型支持:所有数值类型。 精度说明符:十进制小数位数。 默认值精度说明符:由 NumberFormatInfo.CurrencyDecimalDigits 定义。 更多信息:货币(“C”)格式说明符。
“D”或“d”十进制结果:整型数字,负号可选。 受以下类型支持:仅限整型类型。 精度说明符:数字位数下限。 默认值精度说明符:所需数字位数下限。 更多信息:十进制(“D”)格式说明符。
“E”或“e”指数(科学型)结果:指数表示法。 受以下类型支持:所有数值类型。 精度说明符:十进制小数位数。 默认值精度说明符:6. 更多信息:指数(“E”)格式说明符。
“F”或“f”定点结果:整数和十进制小数,负号可选。 受以下类型支持:所有数值类型。 精度说明符:十进制小数位数。 默认值精度说明符:由 NumberFormatInfo.NumberDecimalDigits 定义。 更多信息:定点(“F”)格式说明符。
“G”或“g”常规结果:更紧凑的定点表示法或科学记数法。 受以下类型支持:所有数值类型。 精度说明符:有效位数。 默认值精度说明符:具体取决于数值类型。 更多信息:常规(“G”)格式说明符。
“N”或“n”数字结果:整数和十进制小数、组分隔符和十进制小数分隔符,负号可选。 受以下类型支持:所有数值类型。 精度说明符:所需的小数位数。 默认值精度说明符:由 NumberFormatInfo.NumberDecimalDigits 定义。 更多信息:数字(“N”)格式说明符。
“P”或“p”百分比结果:数字乘以 100 并以百分比符号显示。 受以下类型支持:所有数值类型。 精度说明符:所需的小数位数。 默认值精度说明符:由 NumberFormatInfo.PercentDecimalDigits 定义。 更多信息:百分比(“P”)格式说明符。
“R”或“r”往返过程结果:可以往返至相同数字的字符串。 受以下类型支持:Single、Double 和 BigInteger。 注意:建议只用于 BigInteger 类型。 对于 Double 类型,请使用 “G17”;对于 Single 类型,请使用 “G9”。 精度说明符:已忽略。 更多信息:往返过程(“R”)格式说明符。
“X”或“x”十六进制结果:十六进制字符串。 受以下类型支持:仅限整型类型。 精度说明符:结果字符串中的位数。 有关详细信息,请参阅十六进制(“X”)格式说明符。
  • 注释

类型开始标志结束标志描述
单行注释//从标记开始到该行行尾的文本被编译器忽略
带分隔符的注释/**/从开始标记到结束标记之间的文本被编译器忽略
文档注释///这种类型的注释包含 XML 文本,可以使用工具生成程序文档
  1. 不能嵌套带分隔符的注释
  2. 对于单行注释,一直到行结束都有效
  3. 对于带分隔符的注释,直至遇到第一个结束分隔符都有效

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

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

相关文章

【内网渗透】记一次靶机实战

一、信息收集 1.端口扫描 使用nmap进行端口扫描,发现其开放了22、80、8080、9000端口。 访问其8080端口,发现是一个web界面。 浏览页面内容,提升有一些提示。 【一一帮助安全学习,所有资源获取处一一】 ①网络安全学习路线…

vue2升级vue3的新变化

目录1、组合式API和setup语法糖definePropsdefineEmitsdefineExpose其他2、响应式原理ref和reactiverefreactivetoReftoRefs3、computed和watchcomputedwatchwatchEffect4、v-modelv-model参数v-model修饰符5、key6、v-if和v-for的优先级对比7、异步组件vue 作者(尤…

天宇优配|医药股反弹受阻 公募乐观态度不改

历经前期继续反弹后,医药板块11月23日呈现大幅回调,相关细分赛道指数均有所下行,跌幅超越9%的相关个股更是不在少数。 国庆以来这轮医药反弹行情是否就此结束?对此,公募最新预判指出,23日医药板块回调与商场…

mp4视频格式转换器工具,万兴优转-多功能视音频处理软件

MP4是一种大众熟知的视频格式其优势在于在所有的播放器上都能够基本适用因此对于一些较为特殊的视频格式往往都需要将其转换为MP4视频格式才能够在播放器上正常播放。 那么怎样才能将这些特殊的视频格式转换为常用的mp4视频格式呢?这就需要用到mp4视频格式转换器工具…

用于useradd创建用户的规则文件-尚文网络xUP楠哥

~~全文共1026字,阅读需约5分钟。 进Q群11372462,领取专属报名福利,包含云计算学习路线图代表性实战训练大厂云计算面试题资料! # Linux创建普通用户 找来一台Linux系统,首先,执行useradd命令,不加任何参数…

力扣(LeetCode)65. 有效数字(C++)

模拟 面向测试用例的编程,想象到了工程开发的画面。改需求,代码也可以精简! 首先判断首位正负号,去除正负号,如果只有一个正负号字符,false。 判断 ′.′.′.′ ,如果是单独的 ′.′.′.′ &a…

PS软件下载安装以基本配置

先访问地址 PS下载地址 下载需要付费 给你的下载地址链接一定要保存好 然后根据自己的电脑系统和配置选择一个适合自己的 最后 会下下来一个解压包 然后 我们在 一个盘下 注意 不要用C盘 这里我选择D盘 创建一个文件夹 叫PS设计工具 然后将解压包解压到对应的 PS开发工具文…

第五章 神经网络(下)

5.3 误差逆传播算法 多层网络地学习能力比单层感知机强的多。欲训练多层网络,之前的简单感知机学习规则显然不够用了,需要更强大的学习算法。误差逆传播(error BackPropagation,简称BP)算法就是其中最杰出的代表。现实…

CPU受限直接执行

目录 1. 虚拟化CPU 2. 进程 2.1 进程的机器状态 2.2 进程创建 2.3 进程的状态 3. 受限直接执行 3.1 直接执行 3.2 受限制的操作 3.3 在进程之间切换 3.3.1 协作方式:等待系统调用 3.3.2 非协作方式:操作系统进行控制 3.3.3 保存和恢复上下…

油藏生产业务+机器学习代理优化算法

前前处理,把后台需要的参数都读出来。写进name.txt 生成新的sch文件,需要在data里追加新sch名字 没改变的井就不用重新卸载关键字里了。 重启动模型:制作出来是空的,得自己加别的东西 模型要准确,否则不好和历史模型…

【吴恩达机器学习笔记】二、单变量线性回归

✍个人博客:https://blog.csdn.net/Newin2020?spm1011.2415.3001.5343 📣专栏定位:为学习吴恩达机器学习视频的同学提供的随堂笔记。 📚专栏简介:在这个专栏,我将整理吴恩达机器学习视频的所有内容的笔记&…

OpenGL原理与实践——核心模式(三):Texture-纹理系统理论与应用

目录 初识——纹理系统是什么?怎么用? Texture —— UV坐标系统 Texture Wrapping:UV超过了[0,1]怎么办? Texture Filter:UV经过计算得到的是浮点数怎么办? 在OpenGL中该怎么做呢? Texture Unit——…

列表和标签企业报告版的完整报告解决方案

列表和标签企业报告版的完整报告解决方案 无缝集成到所有主要开发环境和编程语言:Visual Studio、.NET/。NET核心(C#、VB.NET)、C/C、Delphi/VCL、Java、Progress、DataFlex、dBASE PLUS、Xbase等。 通过现代数据绑定灵活连接到任何数据源:List&Labe…

自适应点云配准(RANSAC、ICP)

点云配准 实验目标 任务一:将两个形状、大小相同的点云进行配准,进而估计两个点云之间的位姿。 任务二:将一些列深度图反向投影得到点云,经过配准后,得到每个深度图之间的位姿变换,并将相应的点云融合到一…

【云原生】Docker镜像的创建,Dockerfile

内容预知 1.Dokcer镜像的创建 1.1 基于现有镜像创建 1.2 基于本地模板创建 1.3 基于Dockerfile 创建 联合文件系统(UnionFS ) 镜像加载原理 容器中操作系统容量小的原因 Docker镜像结构的分层 Dockefile的引入 2. Dockerfile 操作命令的指令 2.1 FROM 镜像 2.2 MA…

股票接口实时交易数据怎么查询?

股票数据接口作为软件应用而言,很多资源和数据是由自身提供的,像其他一些功能还是需要调用第三方提供的服务,这其中就涉及到股票数据接口api的调用功能,通过api来获取实时交易数据查询更方便,因此,如果交易…

【学习笔记17】JavaScript作用域

笔记首发 一、作用域 😴我们学变量,不是在任何地方都可以使用😴变量有一个使用区间, 这个可以使用的区间就叫做作用域 1、全局作用域 😫 script标签内部声明的变量,就是全局作用域的变量😏在全局作用域声明…

计算机网络的定义和分类

计算机网络早期定义:自治互联的计算机集合 计算机网络系统的基本组成为:通信子网资源子网 计算机网络分类: 公用网通常是由电信公司出资建造的大型网络。 专用网通常是由某个部门为满足本单位特殊业务的需要建造的网络&#xff…

基于springboot+jpa+camunda实现简单的请假审批流程

整个camunda的绘图、具体使用,参照上一篇文章Camunda工作流引擎简记。 源码地址,相关技术储备如下 springboot–v2.5.4jpa–v2.5.4postgresql–v11camunda–v7.16.0 整个过程不需要建表,这就是JPA面向对象编程的好处,这也是我认…

33 - C++中的字符串类

---- 整理自狄泰软件唐佐林老师课程 1. 历史遗留问题 C语言 不支持真正意义上的字符串 C语言用 字符数组 和 一组函数 实现字符串操作 C语言 不支持自定义类型,因此无法获得字符串类型 解决方案 从C到C的进化过程 引入了 自定义类型在C中可以通过类完成字符串类型…