开启.Net学习之路
我本人最终的目的是做出一款属于自己的游戏,顺带具备一些其他开发技能,再加上自己极其讨厌Java,所以毫不犹豫投入了.Net的怀抱。首先,游戏引擎Unity首推C#作为开发语言,其次,.Net这几年发展一直在进步,有了MIT开源的.Net Core,我相信未来.Net一定会在中国得到更多的使用。
那么,学习.Net,第一步就是学习C#语言了,为什么不直接学习而是先去学C语言了呢?是因为我想多了解底层知识,这样在学习更高级的语言时,就不至于对某些概念搞不清楚了。
为此,我买了本C#本质论(基于C#7.0),争取像看C Prime Plus那样的细心去看这本书,看完这本书,就上手Unity的学习!
C#的Hello World程序
书中第一章简单地介绍了C#的一些基本的知识。
类、主函数、关键字
首先要学习的,当然是永恒经典--Hello World程序啦!
class Hello World{
static void Main(){
System.Console.WriteLine("Hello World");
}
}
从这段代码中,首先能看出的C#与C语言不同的是,C#多了类的概念,并且哪怕是最基本的Hello World程序,都要写在类里面,这点跟我最讨厌的Java语言是一样的,也强调了C#是很纯粹的面向对象语言。
主函数Main()也是写在类里面,而且这里和C语言不同,主函数首字母大写了,这是C#规定的。也是一种经典的命名风格--Pascal大小写,即名字中每个单词首字母大写。
static是C#中关键字,当然这在C语言中也有,在C语言中是静态数据的意思,而第一章书并未介绍它在C#中的含义,姑且放下先。每个编程语言都有属于自己的关键字,各种编程语言之间难免会有相同,但其意义不一定相同。
void是函数返回值类型,C语言中要求主函数一定要是返回值为整数的函数,而C#并不强求。
C#的语句是用分号分隔的,这与C语言一样。
方法
面向对象语言中,某些函数被称为方法。方法一般存在与类里面,它执行一系列语句。上面代码中,主函数就可以被叫做Hello World类里的方法,这个方法的实践是输出Hello World字符串。
方法在C#中是已命名的代码块,由方法声明和大括号及里面的语句组成。方法是可以重用的,可以在多个地方调用。这是面向对象语言的逻辑。
变量
声明变量的方法跟C语言是一样的,都是数据类型+变量名。赋值也是使用等号。至少目前看来,可以直接用C语言的概念去理解C#的变量。
利用变量来实现Hello World程序:
class Hello World{
static void Main(){
string hw = "Hello World";
System.Console.WriteLine(hw);
}
}
与C语言不同的是,C#中字符串也是数据类型,而不像C语言那样是以char数组的形式来声明。但要注意的是,string类型是不可修改的,因为它不是数组,不能对其以数组那样元素的方式来修改,要修改string变量,只能重新初始化赋值。
控制台输入和输出
前面的Hello World程序中,与C语言最大不同的是,输出Hello World字符串的方式,C#中使用System.Console.WriteLine()这一段语句来输出字符串,这到底是什么,书中还没解释,但指出了一个新概念--控制台。System.Console.WriteLine()是一段将文本输出到控制台的代码。
至少目前看来,控制台是C语言中的stdin、stdout。
控制台获取用户输入使用System.Console.ReadLine(),下面是让用户输入Hello World并输出:
class Hello World{
static void Main(){
string hw;
hw = System.Console.ReadLine();
System.Console.WriteLine(hw);
}
}
这里可以看出,System.Console.ReadLine()接收用户的输入内容,并把这些内容返回给变量。
System.Console.WriteLine()还有其他灵活的用法,比如像printf()那样用索引和变量灵活输出变量。
class Hello World{
static void Main(){
string hw="Hello World!";
System.Console.WriteLine("This program output:{0}",hw);
}
}
代码中的{0}就是索引,它对应到后面的变量名hw。以此类推,还可以有{1}、{2}等,也一次对应后面的指定位置的变量。
小结
C#有着与C语言很多相似的地方,也有更多C语言所没有的东西,既要保持C语言之前的知识,也要勇于接受面向对象语言的新东西呀!