面向零基础新手的 C# 基础知识 01-08

好啦好啦。

不就是打回重造吗。

学一遍C#吧。

之前,我都是在B站上看别人翻译的视频。然后,我灵光一闪,在Microsoft Imagine 中 ,似乎也有提供学习C#的内容。而且还是我们的亲爱的Bob讲师授课!

不废话了,开始吧。

[hermit auto="0" loop="0" unexpand="0" fullheight="0"]netease_songs#:33316493[/hermit]


01

由于这个课程面向的年龄比较广,上至80岁,下到12、13岁。所以,Bob在讲授的时候比较细。

第一节课,当然就是概述、以及对今后发展的希望了。

(有点像小学的开学典礼啊)

Bob自己说,这是从2005年来他教授的第六版了,在这几年间,有数千万学员学习了他的课程。可以说,没有他,世界上就少了这么多学习编程的人。

总之,开始吧。


02

第一节课,当然就是要我们体会一下编程的乐趣了。

不过,我们学C#,要创建的是控制台应用。(话说回来,好像除了VB AI2,其他都是这样的啊)

国际惯例,第一节课当然是Hello World了。

(当然,高手们肯定是嗤之以鼻的)

Bob要求我们,一个一个字的打上去,别管Vs的任何提示,直接硬打。

这有点像信息技术课的时候,我们第一次学习VB时候的场景。

“老师!电脑说我找不到对象!”

“老师!电脑哭了!”

“……”

幸好VB还不区分大小写,要是区分还更麻烦了。

于是,代码是这样的。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace First
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("来者可是……?");
Console.ReadLine();
}
}
}

(看着这么多,其实就两行)

总之,打完了之后,按F5,结果是这样的:

来者可是……?

 

(第二行按任意键+回车退出)

接下来,Bob阐述了几类容易出现的问题。这里就不赘述了。


03-04

这之后,就是解析时间了。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;


//(这里以上,就是.Net 运行库的内容(总觉得MVA翻译成运行时不恰当),所谓的.Net 运行库,据Bob说,就是相当于一个嫁接层,用来链接,以及与系统之间交互。这可以增强安全性。)

namespace First


//namespace,也就是命名空间,Bob说他现在不想涉及太深奥的概念,所以就简单提一下,命名空间就是来容纳类(即下方的Class)用的。
{
class Program


//Class,就是类,也就是来包含代码块的东西。
{
static void Main(string[] args)


//在这里,Bob仍然不想多讲,他说,什么Static、void,甚至string、args他都准备以后再说
{
Console.WriteLine("来者可是……?");
Console.ReadLine();

//这里总算到了,最最基本的一层,代码,语句。Console就是对象,WriteLine就是方法,而后面的是调用的

//参数。

//什么是方法呢?方法就是微软工程师们预先写好的代码块,也就是有名字的类。Bob说,就好比你到图书馆

//(namespace)去,想找一本书(Class),在目录的(Main)某一章(某个语句)的第几行(对象.方法)找

//到了参考资料。
}
}
}

05

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 变量
{
class Program
{
static void Main(string[] args)
{
int x;
int y;

x = 7;
y = x + 3;
Console.WriteLine(y);
Console.ReadLine();

}
}
}

老样子,还是先打代码。

首先,我们需要明白的是,int变量类型(integer,即整型),是只能取整的,(这像Pascal),包含小数都不行。

还有,C#中的表达式像数学公式一样,但又不完全是。所谓 X=3X-2,你一看就知道X=1.但是在C#中,假设你没进行其他操作,那么,X就会等于-2。

为什么呢?

用文字翻译一下,大概是这样的:

数学中的X=3X-2,代表的意思是,“存在一个数,使得该数的三倍减二是他本身”,也就是一个“问题”。

而C#中,他代表一种操作。“你要让计算机帮你做什么?”也就是说,翻译过来是这样的:“请你把X乘三,再减一个2。”

这之后,Bob又打了一段代码(当然我加工了一下)

     Console.WriteLine("来者可是?");
Console.Write("贵姓?");
string xing;
xing=Console.ReadLine();

Console.Write("大名?");
string ming;
ming = Console.ReadLine();

Console.WriteLine(xing + ming + "村夫……" + "你敢……");
Console.ReadLine();

这里出现了一个新的变量类型:字符型(String)。即,文字。

这里的加(+)的意义和上面不一样,是连接字符串的意思。

还有要注意的是WriteLine和Write的区别。(类似于Pascal中的Writeln 和 Write)。一个换行,另外一个不换行。

06

注意:这集超级强!

(前后略)

 Console.WriteLine("人参赢家");
Console.Write("是1号,还是2号,还是3号门呢?");
string Choice=Console.ReadLine();
string hint = "";
if (Choice == "1")
hint = "天呐!12450万元的车!";
else if (Choice == "2")
hint = "哦!我的上帝!一辆闪闪发光的船!";
else if (Choice == "3")
hint = "太棒了!一抔黄土!";
else
{
hint = "弄啥玩意儿嘞?俺是乡下的,听不懂你们城里人说话!";

//hint += "hint += "老子弄死你!!!";";
}
Console.WriteLine(hint);
Console.ReadLine();

如上图,是三次修改的后的代码。

第一次的代码是每个if语句中都初始化一遍Hint变量,再输出。后来,Bob指出,可以用全局变量,把hint放在顶部,这样可以节约代码。

第二次我是没看清,结果每次都输出一遍ReadLine,蠢得要死。

第三次,Bob提出了,他有一个新的运算符"+="要提出。这个运算符号基本和hint=hint+"老子弄死你!!!"等效。

然后,最终版,Bob说,当我们只有一个条件要判断的时候,往往用这样的语句:

变量类型 变量名 = (判定条件) ? 条件为真时变量取得值  : 条件为假时取的值;

(斜体部分可省略)

用这个程序来解释,可以是这样:

string hint = (Choice=="1")  ?  "一辆闪闪发光的船" : "一卷纱布";

还有,在输出的时候,还有一种语句可以使用:

Console.WriteLine("文本{0}{1}{2}",变量1,变量2,变量3);

放在这里,就是:

Console.WriteLine("天哪!聪明的你输入了{0},赢了{1}!",Choice, hint);

注意:{0},{1}等有固定顺序!代表着逗号后面的变量顺序!

所以,完整代码是:

     Console.WriteLine("人参赢家");
Console.Write("是1号,还是2号,还是3号门呢?");
string Choice = Console.ReadLine();

string hint = (Choice == "1") ? "一辆闪闪发光的船" : "一卷纱布";

//Console.WriteLine("天哪!你赢了" + hint + "!");
Console.WriteLine("天哪!聪明的你输入了{0},赢了{1}!",Choice, hint);
Console.ReadLine();

重点提示:

课后习题有错!

▲以子之矛,攻子之盾,则何如?

else 怎么能放在 else if 前面呢?

▲”英雄所见略同“,哈哈

07

这集讲的是概念,顺便复习了一下。

主要有两个操作符:

&&与运算

||或运算

以及前面讲过的那个“一步判断”。

下节课讲循环。

 

 

futa: