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

第3章 C#编程概述 笔记

第3章 C#编程概述

3.1 一个简单的 C# 程序

// 使用System空间
using system;
// 声明一个命名空间 - Simple
namespace Simple;
{// 声明一个新的类 - Programclass Program{// 声明一个方法 - Mainstatic void Main(){Console.Write("Hi there!");}}
}

3.2 标识符

标识符是一种字符串,用来命名变量、方法、参数和其他程序结构。

标识符规定:

  • 字母和下划线(a-z、A-Z 和 _)可以用在任何位置
  • 数字不能放在首位,但可以放在其他任何地方
  • @ 字符只能放在标识符的首位,但不推荐

标识符区分大小写,不建议使用大小写区分变量的含义。

// 语法上有效,但非常混乱,不建议
int totalCycleCount;
int TotalCycleCount;
int TotalcycleCount;

3.3 关键字

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

  • 关键字不能被用作变量名或任何其他形式的标识符,除非以 @ 字符开始
  • 所有 C# 关键字全部由小写字母组成

上下文关键字 仅在特定结构中充当关键字的标识符,在非特定结构中,可以被用作用户的标识符。

3.4 Main:程序的起始点

每个C#程序必有一个类带有Main方法,可执行起始点在Main中的第一条指令,Main必须首字母大写。

// 简单形式
static void Main()
{// do something
}

3.5 空白

程序中的空白指的是没有可视化输出的字符。空白字符会被编译器忽略,但会使代码更清晰易读。

空白字符包括:

  • 空格(Space)
  • 制表符(Tab)
  • 换行符
  • 回车符
// 清晰的格式
void Main()
{Console.Write("Hi there!");
}// 拥挤的格式
void Main(){Console.Write("Hi there!");}

3.6 语句

语句是描述一个类型或告诉程序去执行某个动作的一条源代码指令。

简答语句由;结束。

int var1 = 5;
System.Console.WriteLine("The value of var1 is {0}", var1);

块是一个由成对大括号包围的N条语句序列,在语法上相当于一条语句。

{int var1 = 5;System.Console.WriteLine("The value of var1 is {0}", var1);
}

块的使用原则:

语法上只需要一条语句,但是需要执行的动作无法用一条简单的语句来处理的情况下,考虑使用块。

某些特定的程序结构只能使用块。

块后面不跟分号。

3.7 从程序中输出文本

控制台窗口是一种简单的命令提示窗口,允许程序显示文本并从键盘接收输入。

BCL提供了Console的类,包含将数据输入和输出到控制台窗口的方法。

3.7.1 Write

Write 把一个文本字符串发送到程序的控制台窗口。

// 字符串需要用 双引号 包裹
System.Console.Write("This is text1.");

3.7.2 WriteLine

WriteLine 和Write功能相同,但汇总每个输出字符串的结尾加一个换行符。

System.Console.WriteLine("This is text1.");

3.7.3 格式字符串

Write 和 WrtieLine 语句第一个参数必须是字符串,称为 格式字符串,

格式字符串可以包含替代标记:

// 语法
Console.WriteLine(格式字符串(含替代标记), 替换值 0, 替换值 1, 替换值 2, ...);// 示例
Console.WriteLine("Two sample integers are {0} and {1}.", 3, 6);

C# 6.0 引入了插值字符串,可以直接在替代标记内插入变量名:

int var1 = 3;
int var2 = 6;
Console.WriteLine($"Two sample integers are {var1} and {var2}")

3.7.4 多重标记和值

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

值可以以任意顺序使用

值可以在格式字符串中替换任意次

代码示例:

Console.WriteLine($"Three sample integers are {1}, {0} and {1}", 3, 6);

标记不能引用超过替换值列表长度以外位置的值。

// 错误,位置2不存在
Console.WriteLine($"Three sample integers are {1}, {0} and {2}", 3, 6);

3.7.5 格式化数字字符串

为了更好的呈现文本字符串的输出,通过格式化字符串来实现。

// 输出数字
Console.Write("This value is {0}.",  500);
// 格式化为货币
Console.Write("This value is {0:C}.", 500);

字符串的格式语法由3个字段组成:索引号、对齐说明符(可选)、格式字段(可选)

1.对齐说明符

表示字段中字符的最小宽度,

可选的,由逗号和整数组成,

整数表示使用字符的最少数量。

正整数表示右对齐;负数表示左对齐。

如果输出字符长度比给定的整数小,则其余使用空格填充;

否则,对齐说明符会被忽略

int myInt = 500;Console.WriteLine("|{0, 10}|", myInt);  // "|       500|"
Console.WriteLine("|{0,-10}|", myInt);  // "|500       |"
Console.WriteLine("|{0, 1}|", myInt);   // "|500|"// 插值字符串
Console.WriteLine($"|{myInt, 10}|");    // "|       500|"

2.格式字段

格式字段指定了数字应该以哪种形式表示。

冒号后面必须紧跟格式说明符,中间不能有空格。
格式说明符为一个字母。
精度说明符是可选的,由1-2位数字组成,实际意义取决于格式说明符

double myDouble = 12.345678;
Console.WriteLine("{0,-10:G} -- General",   myDouble);                    
Console.WriteLine("{0,-10} -- Default, same as General",       myDouble);
Console.WriteLine("{0,-10:F4} -- Fixed Point, 4 dec places",   myDouble);
Console.WriteLine("{0,-10:C} -- Currency",                     myDouble);
Console.WriteLine("{0,-10:E3} -- Sci. Notation, 3 dec places", myDouble);
Console.WriteLine("{0,-10:x} -- Hexadecimal integer",          1194719 );// output 12.345678  -- General12.345678  -- Default, same as General12.3457    -- Fixed Point, 4 dec places$12.35     -- Currency1.235E+001 -- Sci. Notation, 3 dec places123adf     -- Hexadecimal integer

3.标准数字格式说明符

9种标准数字格式说明符

C、c 货币

D、d 十进制数

F、f 定点

G、g 常规

X、x 十六进制数

N、n 数字

P、p 百分比

R、r 往返过程

E、e 科学计数法

对齐说明符和格式说明符 也可用于插值字符串。

3.8 注释:为代码添加注解

注释包括:单行注释、行内注释、文档注释

行内注释 - 带分隔符的注释:

有开始标记 /*、结束标记*/

标记对之间的文本 会被编译器忽略

带分隔符的注释可以跨任意多行

 /*This text is ignored by the compiler.Unlike single-line comments, delimited commentslike this one can span multiple lines.*/

3.8.1 关于注释的更多内容

注释不能嵌套,一次只能由一个注释起作用

注释类型的范围:

单行注释,一直到行结束都有效

带分割符的注释,一直到遇到第一个结束标记都有效

3.8.2 文档注释

文档注释包含XML文本,可以用于产生程序文档。

/// <summary>
/// This class does...
/// </summary>
class Program
{//...
}

3.8.3 注释类型总结

单行注释 - //

带分隔符的注释 - 有开始标记 /*、结束标记*/

文档注释 - ///

http://www.xdnf.cn/news/1053757.html

相关文章:

  • 计算机求职提前批/求职什么时候投递合适
  • 宝塔部署.net项目(nopcommerce)
  • K-Means算法详细解析:从原理到实践
  • C++ STL常用二分查找算法
  • 2025年品牌定位推荐排行榜:锚定市场航向,解锁品牌增长新势能
  • Python+QT远程控制助手-ver2
  • 《注解的江湖:一场元数据的“宫斗剧”》
  • 每日算法刷题Day32 6.15:leetcode枚举技巧7道题,用时1h10min
  • 计网复习知识(17)应用层
  • jQuery 3D透明蓄水池状柱状图插件
  • IDA动态调试环境配置全流程
  • 【Markdown】基础用法汇总(标题、列表、链接、图片、加粗斜体、上下角标、引用块、代码块、公式)
  • 学习日记-day30-6.15
  • Linux安装LLaMA Factory
  • Netty 全面深入学习指南
  • 项目实训个人工作梳理
  • 【算法 day03】LeetCode 203.移除链表元素 | 707.设计链表 | 206.反转链表
  • nodejs中Express框架的基本使用
  • ​​信息系统项目管理师-项目范围管理 知识点总结与例题分析​​
  • Claude Code 实用教程——使用方法详解
  • 庙算兵棋推演AI开发初探(8-神经网络模型接智能体进行游戏)
  • 文本预测和分类任务
  • [笔记] 基于esp32s3用GUI-Guider-1.9.1-GA开发LVGL界面
  • 认识电子元器件之磁传感器
  • Spring有代理对象的循环依赖时,如何确保代理对象能够正确持有原始对象的所有属性赋值结果?
  • 234. 回文链表
  • SQL 增删改查 —— 笔记篇
  • 面向对象设计原则
  • 深度学习——基于卷积神经网络实现食物图像分类【3】(保存最优模型)
  • React19源码系列之Hooks(useState)