最近在做一些需要用到 C# 开发的项目,许久未碰有些生疏,因此决定把语言的基础内容先都快速过一遍。为方便查阅,挑选最精简的部分整理于该博客。
【说明】
- 本系列的目标是整理出十个左右的博客(传送门),其中每个博客大概包含 10 个左右的非常简短的 Section,适合快速入门。目前更新到:精简 C# 入门(三)
- 本系列不适用于完全的编程初学者(未接触任何计算机语言),这一类读者建议仔细学习【参考资料】中的视频资源
【参考资料】
1.b站:【01_C#入门到精通】新手强烈推荐:C#开发课程,一整套课程
#1 创建项目
使用平台:Visual Studio 2019
创建项目页面:选择 控制台应用 (.NET Framework)
创建完成后的初始页面:
区域1:引用区,引用 命名空间
区域2:代码区,由大到小分别为 命名空间
> 类
> 方法
,这三者分别对应区域 2, 2.1, 2.1.1
#2 两行代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp2
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World");
Console.ReadKey(); // 获取用户按下的下一个字符
}
}
}
第二行代码 Console.ReadKey();
功能见注释,目的在于暂停程序,防止控制台闪退(如果不添加,控制台在输出 “Hello World” 后将马上退出)
运行:单击运行按钮 & F5
错误检查:点击生成解决方案 & F6
在运行项目之前,可以先通过生成解决方案来检查潜在错误,效果如图:
#3 VS Basic
字体:建议使用 Consolas
工具 → \to → 选项 → \to → 字体和颜色
更改启动项目
在默认情况下,不管解决方案中含有几个项,默认情况下在点击启动 & F5 时只会运行第一个项,例如下图中的 ConsoleApp2。
若想要运行其他项,例如上图中的 ConsoleApp3,则需进行一些设置:右键单击解决方案 → \to → 属性 → \to → 更改启动项目为 “当前选定内容”
项的卸载
当解决方案含有多个项目时,往往不想加载某些项目但同时也更不想删除,此时可以将其卸载
#4 注释符
单行注释 //
// 这是单行注释
多行注释 /**/
/* 这是
多行注释 */
快捷注释 Ctrl + K + C
选中目标区域后按下 Ctrl + K + C
(取消注释为 Ctrl + K + U
)
文档注释 ///
在命名空间、类、方法前输入 ///
,会自动生成一个文档注释模板,例如:
/// <summary>
///
/// </summary>
/// <param name="n1"></param>
/// <param name="n2"></param>
/// <returns></returns>
public static int GetMax(int n1, int n2)
{
int n = 1;
return n1 > n2 ? n1 : n2;
}
填入内容后:
/// <summary>
/// 求两个整数中的较大值
/// </summary>
/// <param name="n1">第一个整数</param>
/// <param name="n2">第二个整数</param>
/// <returns>较大的整数</returns>
public static int GetMax(int n1, int n2)
{
return n1 > n2 ? n1 : n2;
}
#5 VS 的常用快捷键
Ctrl + S
保存
F1
查看文档
Ctrl + K + C
快捷注释(取消注释为 Ctrl + K + U
)
#region ... # endregion
折叠冗余代码,使整体代码更加简洁,如下图:
- 三个大红框分别为:折叠前,添加后,折叠后
- 左侧出现的加减符号用于折叠及展开
#6 变量和数据类型(Basic)
int n1 = 1;
double n2 = 3.14;
string name = "小红";
char gender = '女';
bool ifCorrect = true;
一个有趣的例子:
Console.WriteLine(5 + "5");
>>>
"55"
#7 占位符 {}
C# 中的占位符有点类似于 Python 中的 .format
,都需要使用 {}
。示例:
int a = 1;
int b = 11;
Console.WriteLine("{0}+{1}={2}", a, b, a+b);
>>>
"12"
保留数位:{0:0.00}
表示对第 0 个变量保留两位小数
#8 输出和接收 Write & Read
Write
From Section 2:
Console.WriteLine(); // 输出一个字符串并换行,当字符串为空时,相当于一个换行符 \n
Console.Write(); // 输出但不换行
Read
From Section 2:
Console.ReadKey(); // 读取输入的一个键
Console.ReadLine(); // 读取输入的一个字符串
示例:
Console.WriteLine("请输入你的QQ");
string input = Console.ReadLine();
Console.WriteLine("你的QQ为:{0}", input);
Console.ReadKey();
#9 转义符
\n
换行
\t
Tab
\b
Backspace
\"
表示 "
,实现在字符串中显示 "
\\
表示 \
,常用于地址字符串中,例如 "C:\\Users\\Desktop"
@"..."
主要有两个作用:
- 取消
\
的转义作用,例如@"C:\Users\Desktop"
- 将字符串按照原格式输出,例如(删去
@
则会报错)
Console.WriteLine(@"lala~
yaya~");
>>>
"lala~
yaya~"
#10 运算符
10.1 算数运算符
+
, -
, *
, /
, %
加,减,乘,除,取余
运算结果(输出)的数据类型,与输入变量中范围最大的那个相同,例如 int % double = double
10.2 复合运算符
++
, --
a++
= a=a+1
++
, --
除了跟在变量后,还可以放在变量前(如 ++a
),这是其含义也发生了一定程度上的改变,具体可自行查阅。(作者认为理解掌握 a++
已经足够了)
+=
, -=
a+=5
= a=a+5
当然除此之外还有 *=
, /=
, %=
10.3 关系运算符
>
, <
, >=
, <=
, ==
, !=
10.4 逻辑运算符
&&
, ||
, !
,与,或,非
逻辑运算符之间存在优先级差异,并且 &&
与 &
同表示逻辑与但仍有一些不同。但是针对这两点,作者认为是可以忽视它们的:
- 在优先级方面,使用括号来体现优先级,例如:
// 由于 || 优先级低于 &&,因此上下两行所表示的含义一致
// good
bool judge = (a > b) || (b > c && c > d);
// bad
bool judge = a > b || b > c && c > d;
- 对于使用
&&
or&
,绝大部分情况使用&&
即可,||
同理
#11 数据类型转换
11.1 隐式类型转换
特点:自动发生
要求:两种类型兼容,且目标类型范围 > 原类型范围,例如 int
转 double
int n1 = 3;
int n2 = n1;
11.2 显示类型转换
特点:需要使用特定语法 (目标类型)原变量
要求:两种类型兼容,且目标类型范围 < 原类型范围,例如 double
转 int
double n1 = 3.14;
int n2 = (int)n1;
11.3 Convert
强制类型转换
使用 Convert.ToXXX()
,例如:
string str = "123";
int n1 = Convert.ToInt32(str);
double n2 = Convert.ToDouble(str);
11.4 Parse
, TryParse
强制类型转换
例如使用 int.Parse()
将 string
转换为 int
:
string str = "123";
int n1 = int.parse(str);
关于 Parse
, TryParse
更详细的示例:由于 TryParse
即使转换出错也不会产生报错,因此这两种方法适用于不同的场景
转载:https://blog.csdn.net/weixin_43728138/article/details/115771081