C#本质论第一章学习笔记

851 阅读4分钟

开启.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语言之前的知识,也要勇于接受面向对象语言的新东西呀!