await 单步调试 c#_C# 学习之路(一)

    你好呀,这是“Moly的太阳”的第一篇文章。“Moly的太阳”是一个致力于分享生活,分享知识的公众号,希望我们的文章能给你带来快乐和有用的知识。1575c9d2eb8e36883c16d3cefae6ddcf.png1575c9d2eb8e36883c16d3cefae6ddcf.png1575c9d2eb8e36883c16d3cefae6ddcf.png1575c9d2eb8e36883c16d3cefae6ddcf.png


    最近 zion(也就是本文作者我) 和小伙伴们打算一起做一个游戏,开始自学C#。为了更好地巩固已学知识,并将一些我觉得有用的知识分享给大家,我会把在C#学习之路上学到的值得分享的东西通过一系列文章分享给看文章的你。


在本系列文章中,涉及到IDE的地方,笔者将使用宇宙最强IDE Visual Studio 2019。


首先先和大家分享一张VS的智能感知图标表吧!我会在后续内容中分享一些有关 C# 特性的小知识

7cbb5f360026dd565c79ccc42c70a7f3.png

https://docs.microsoft.com/zh-cn/visualstudio/ide/class-view-and-object-browser-icons?view=vs-2015&redirectedfrom=MSDN 来自 Visual Studio 文档


算数运算的结果类型取决于操作数类型[1]

表达式 5.0 / 2.0 的值是 2.5              double / double = double

表达式 5 / 2 的值是 2                      int / int = int 结果向下取整

表达式 5 / 2.0 的值是 2.5                int / double = double C# 倾向于保留更高精度

注意:应尽量避免在同一表达式中混用不同的操作数类型。


数值类型和无穷大[2]

任何除 0 外其他数除以 0 所得结果均为无穷大∞, 在 C# 中用 Infinity 表示无穷大。

而 0 / 0 在 C# 中用 NaN 表示,即“Not a number”,NaN 在 System.Double 结构中。

b5ad2c2f840dcdc6e18f4aad1b136839.png

注意:Console.WriteLine 方法往往会自动调用 ToString 方法,故在此处 Console.WriteLine 方法参数列表中,传入 a.ToString() 等价于传入 a,b.ToString() 和 b 同理。


Parse方法

Parse方法 是一个十分有用的方法,它将 string 转换成 int, char, double....等,故应往 Parse方法 中传入 string 类型的参数

f530b32717b35924a8fe951b8979bba5.png


声明隐式类型变量[3]

int myInt = 99;

声明并初始化了一个整型变量 myInt

double myDouble = 1.0;

声明并初始化了一个浮点型变量 myDouble

上面这种声明具体类型变量的表达式司空见惯,但在C#(这样一门优雅的语言)中,有着一种利用关键字 var 声明隐式类型变量的方式:

var myVariable = 99;var myOtherVariable = "zion";

两个变量 myVariable,myOtherVariable 称为隐式类型变量,var 关键字告诉编译器根据变量的初始化表达式判断变量类型。隐式类型变量适用于类和结构。

声明隐式类型变量时必须同时初始化该变量,形参中不得包含隐式类型变量,如下写法是错误的:

var yetAnotherVariable; //不合法写法void whyVar(var variable); //不合法写法

需要注意的是,如能明确指定变量类型,那么应当毫不犹豫地使用该类型变量,而非隐式类型变量。


表达式主体方法[4]

C# 允许以一种简化的形式写由单个表达式构成的方法。这种方法仍然可以获得参数并返回值

int addValues1(int left, int right) => left + right; //表达式主体方法int addValues2(int left, int right) //常规方法{return left + right;}

上例两方法的效果相同,但显然表达式主体方法在阅读上更为容易,书写上更为简便。此类简化语法的设计称为语法糖。如表达式主体方法不返回值,则为void方法。例如

void showResult(int answer) => Consloe.WriteLine("Hello");

小提示1[5]

方法最小长度没有限制,能用方法避免重复,并使程序更易读,就应毫不犹豫使用方法——不管该方法有多小。同样,方法最大长度也没有限制。但应该保持方法代码的精炼,足够完成一项任务就可以了。若一方法的长度超过一整个屏幕,可能就需要考虑分解该方法。(方法的终极目的是被调用!)


从方法返回多个值[6]

可通过元组(tuple)实现。元组其实就是一个小的值的集合。在方法的返回值类型处用元组替代单个类型即可。

(int, int) returnTwoValues(...){  int val1, val2;  ...//Calculate val1 and val2 here.  return (val1, val2);}

VS中文版调试命令解释[7]

由于历史原因,人们看到VS中文版的各种调试命令时,一直都很难理解它们的真正含义。逐语句逐过程跳出分别对应Step Into,Step Over 和 Step Out。其中,Step Into 和 Step Over 最难区分。何谓“过程”?这个词是VB盛行时的产物。所谓“逐过程”(Step Over),是指如果在调试时遇到其他“过程”(C#称为方法,C++称为函数)调用,就直接调用它(Over它),不跳进去对其中语句进行单步调试。相反,如果选择“逐语句”(Step Into),就会跳入被调用的过程(即方法或函数),对其中的语句进行调试。Step Out 则很好理解,就是直接执行当前过程(方法或函数)剩余的语句,然后跳出该代码块,返回上一级调用位置。三个术语的区别可参考

http://www.developerfusion.com/article/33/debugging/4/


本文中 C# 的有关知识大部分整理自 《Visual C# 从入门到精通(第九版)》清华大学出版社 John Sharp 著 周靖 译 ISBN 978-7-302-51624-8。十分推荐想学习 C# 的朋友购入学习。

[1][2][3][4][5][6][7]均整理自《Visual C# 从入门到精通(第九版)》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值