0. 前言
离职的护士姐妹们,你们如今都在从事什么工作呢?我做出了一个大胆的决定——跨行,学习.Net开发技术。这个想法在一些人看来或许有些不可思议,但对我而言,做自己热爱的事情比什么都重要。人生本就充满了未知与挑战,只要勇敢迈出尝试的第一步,便是一个美好的开端。
第一天的学习相对轻松,主要是进行各种概念的学前入门。我深入了解了什么是.Net开发,以及这门技术所能实现的强大功能。我选择学习的开发语言是C#,可以借助VS(全称Visual Studio)、VS Code、Rider等集成开发环境(IDE)进行程序编写。目前,我已经初步掌握了Visual Studio的各项功能以及使用过程中的注意事项。
接下来,我将详细分享我第二天的学习内容,这些都是后续编程运用的重要基础,主要涵盖注释符、快捷键、变量、运算符、类型转换、转义符等方面。我把自认为比较关键的部分记录如下:
1. 注释符
注释符在编程中兼具注销和解释的双重功能。老师曾打趣说,不写注释就如同 “耍流氓”,这足以体现注释的重要性。在C#中,有3种注释符:
- 单行注释:使用“//”,在其后输入注释内容,这种注释方式仅对本行有效。例如:
// 这行代码的作用是将Hello World打印到控制台中
Console.WriteLine("Hello,World!");
- 多行注释:“/要注释的内容/”,可以用来注释多行内容。如下所示:
/*
Console.WriteLine("Hello World");
Console.WriteLine("Hello World");
Console.WriteLine("Hello World");
Console.WriteLine("Hello World");
Console.WriteLine("Hello World");
Console.WriteLine("Hello World");
*/
- 文档注释:“///”,多用于解释类或方法,其规则相对复杂,目前我还在进一步学习理解当中。
2. 变量的定义与相关知识
2.1 存储变量语法
定义变量时,首先要声明变量类型和变量名,语法为“变量类型 变量名;”,然后再给变量赋值,即“变量名 = 值;”。在定义变量时,有两个关键要点:一是要准确确定存储数据的类型,二是要为变量取一个有意义的名字,这样在后续使用中能更清晰地理解其用途。这里需要注意的是,“=”并非数学意义上的等于,而是赋值运算符,作用是将等号右边的值赋予左边的变量。另外,声明并赋值变量还有一种简写形式:“变量类型 变量名 = 值” 。例如:
// 先声明后赋值
int num;
num = 10;
// 简写形式
int num2 = 20;
2.2 常见数据类型
- 整数类型:
int
,只能存储整数 ,无法存储小数。例如:int age = 25;
- 小数类型:
double
,既能存储整数,也能存储小数,小数点后的有效位数为15 - 16位 ,其取值范围大于int
。例如:double price = 19.99;
- 金钱类型:
decimal
,用于存储金钱小数,数值后需加上“m”(大小写均可),如“decimal money = 5000m
”。 - 字符串类型:
string
,用于存储多个文本,也可存储空值,值需用英文半角双引号括起来,如string zsName = "张三"
,字符串可以存储空string s = ""
。需要注意的是,字符串和字符不同,字符串由多个字符组成。 - 字符类型:
char
,用于存储单个字符,不能存储空值,值需用英文半角单引号括起来,如“char c = 'a'
” 。
3. 变量的命名规则
变量名要有实际意义,现阶段变量名应以26个英文字母开头,后面可跟字母、数字或下划线。同时,还需要注意以下几点:
- 关键字冲突:变量名不能与C#系统中的关键字(显示为蓝色字体)重复。例如,不能将变量命名为“
int
”“class
”等。 - 大小写敏感:在C#中,大小写是敏感的。“
myVariable
”和“MyVariable
”是两个不同的变量。 - 作用域内唯一性:同一作用域内,不允许重复定义同名变量 。
3.1 命名规范
- Camel命名规范:变量名首单词首字母小写,其余单词首字母大写,常用于变量命名。例如:
int myAge = 28;
- Pascal命名规范:每个单词首字母都大写,常用于类或方法命名。例如:
class MyClass { }
4. 赋值运算符
“=
”为赋值运算符,它的作用是将等号右边的值赋给左边的变量。由“=
”连接的表达式为赋值表达式,赋值表达式的值就是等号左边变量的值,如“int number = 10;
” 。在这个例子中,“number
”的值为10,整个赋值表达式“int number = 10
”的值也为10。
5. “+”号的作用
- 连接:当“
+
”号两边有一边是字符串时,它起连接作用 。例如:string str1 = "Hello"; string str2 = "World"; string result = str1 + " " + str2;
,此时“result
”的值为“Hello World
”。 - 相加:当两边都是数字时,执行加法运算。例如:
int num1 = 5; int num2 = 3; int sum = num1 + num2;
,“sum
”的值为8。
6. 占位符
使用占位符时,先设置占位符{0}
、{1}
等“挖坑”,再按顺序传入参数“填坑”。传入参数数量需与占位符数量一致,否则多填无效果,少填会抛异常,且占位符按顺序输出。例如:
string name = "张三";
int age = 20;
Console.WriteLine("姓名:{0},年龄:{1}", name, age);
7. 转义符
转义符由“\
”和特殊字符组成,具有特殊意义:
- \\:表示一个“\”。例如:
string path = "C:\\Program Files";
- \n:表示换行。例如:
Console.WriteLine("第一行\n第二行");
- \":表示一个英文半角双引号。例如:
string str = "He said, \"Hello!\"";
- \t:表示一个tab键的缩进。例如:
Console.WriteLine("Name\tAge");
- \b:表示一个退格键,放在字符串两端无效果。例如:
string str2 = "Hel\blo";
,此时“str2
”的值为“Helo
”。 - \r\n:Windows系统中表示换行,Windows不识别“\n”。例如:
Console.WriteLine("第一行\r\n第二行");
- @符号:
- 取消“\”在字符中的转义作用,使其仅表示一个“\”。例如:
string path2 = @"C:\Program Files";
- 将字符串按原格式输出。例如:
string str3 = @"This is a multiline string";
- 取消“\”在字符中的转义作用,使其仅表示一个“\”。例如:
8. 算数运算符
- “+”:加法。例如:
int a = 3; int b = 2; int c = a + b;
,“c
”的值为5。 - “-”:减法。例如:
int d = 5; int e = 3; int f = d - e;
,“f
”的值为2。 - “*”:乘法。例如:
int g = 4; int h = 3; int i = g * h;
,“i
”的值为12。 - “/”:除法。例如:
int j = 10; int k = 2; int l = j / k;
,“l
”的值为5。 - “%”:取余。例如:
int m = 10; int n = 3; int o = m % n;
,“o
”的值为1。
9. 类型转换
9.1 隐式类型转换
在C#中,要求等号两边参与运算的操作数的类型必须一致,如果不一致,满足下列条件会发生自动类型转换,也就是隐式类型转换:
- 两种类型兼容:例如,
int
和double
兼容,因为它们都是数字类型。 - 目标类型大于源类型:例如,
double
的取值范围大于int
,所以可以将int
类型的值自动转换为double
类型。
int number = 10;
// int --- double,自动类型转换
double d = number;
9.2 显式类型转换
- 两者类型相兼容:例如
int
和double
是兼容的。 - 大的转成小的:当需要将取值范围大的类型(如
double
)转换为取值范围小的类型(如int
)时,需要进行显式类型转换,也称为强制类型转换。 语法:(待转换的类型)要转换的值
double d = 303.6;
// double---int,强制类型转换
int n = (int)d;
Console.WriteLine(n);
Console.ReadKey();
在显式类型转换中,使用“(int) d
”是因为要明确告诉编译器将d
(double
类型)的值强制转换为int
类型。这种转换可能会导致数据精度的丢失,比如上述例子中,303.6
转换为int
类型后变为303,小数部分被舍去。
10. 注意
前面关于\n
和\r\n
的描述我有点疑惑,通过问AI得到下面的回答:
在 Windows 系统中,通常使用 “\r\n” 来表示换行,不过在某些情况下,“\n” 也能起到换行的效果,但严格来说二者是有区别的,因此上述表述不完全准确,以下是具体分析:
- “\r\n” 与 “\n” 的含义
- “\r\n”:“\r” 是回车(Carriage Return),其作用是将光标移到当前行的开头;“\n” 是换行(Line Feed),它会将光标移到下一行。在 Windows 系统的文本文件和许多编程语言中,传统的换行符是 “\r\n”,这是从早期的打字机和电传打字机时代延续下来的习惯,当时需要先回车回到行首,再换行到下一行。
- “\n”:在 Unix 和 Linux 系统中,通常使用 “\n” 作为换行符。
- 在不同场景中的表现
- 在 C# 语言中:
Console.WriteLine
方法在 Windows 系统下,推荐使用 “\r\n” 作为换行符,这样可以确保在 Windows 的命令行环境或其他基于 Windows 的文本处理场景中,换行效果能正确显示。但实际上,使用 “\n” 也能实现换行,这是因为Console.WriteLine
方法在处理输出时会对 “\n” 进行一定的转换处理,使其在 Windows 环境下也能实现换行显示。不过,在处理一些严格遵循 Windows 换行标准的场景,如写入文本文件等,如果使用 “\n” 可能会导致换行显示异常。 - 在其他场景中:在 Windows 系统的批处理文件(.bat)、文本编辑器等环境中,如果使用 “\n” 作为换行符,可能不会被正确识别为换行,而会将 “\n” 作为普通字符处理,导致无法实现预期的换行效果,只有使用 “\r\n” 才能正确换行。
- 在 C# 语言中:
总结
今天,我跟着老师进行了代码练习,边听边操作,确实加深了对这些知识的理解和记忆。但今天学习的内容较多,还需要更多时间去消化吸收。能自己敲出几行代码,心里充满了成就感,不过也有些地方不太明白,比如显式类型转换中“int n = (int) d;
”的具体原理和应用场景,还得再深入研究。未来的学习之路还很长,我会继续努力,不断探索C#编程的奥秘。