C# 101

2017-07-13  本文已影响70人  乱序

C# 是什么

C# 是微软推出的基于 「.NET 框架」的「面向对象」的高级语言,读作 C Sharp(因为 # 是音乐里升号的意思)。Unity 优先使用 C# 进行开发(Unity 也支持使用 JavaScript 开发,但是资料少、不好用)

准备环境

虽然这是一门微软维护语言,但是有一个叫做 mono 的组织致力于以「开源」的方法实现 .NET 框架标准,并提供一个「编译器」。因此你可以在包括 Linux 和 macOS 内的操作系统上使用 C# 来进行编程。

编辑器(Editor)

image

默认只提供查看、编辑、查找文件等基本功能的软件,记事本、Sublime Text 都是编辑器。你可以先新建一个后缀为 .cs 的文件,再手动在「命令行」中调用 mono 提供的编译器把源代码编译成可执行的 .exe 文件。

命令行(Command Line)

image

在没有图形界面(GUI)的时候,电脑最初的操作界面(Interface)。在 macOS 中可以通过终端(Terminal)软件来启动一个命令行界面。命令行界面接受输入一行命令(这种命令的语言、操作方式被称作 Shell),并返回结果。一个没有图形界面、只能通过命令行操作和显示的应用叫做命令行应用(Command Line Application)。Windows 下的命令行终端叫做 CMD(Command),还有一个 Windows 官方更好的命令行终端软件叫做 PowerShell。命令行界面这样的操作形式也被称作控制台(Console)。

通过编写命令行应用来学习一门编程语言是效率最高也是最简单的,因为你不用考虑复杂的图形界面设计、按钮等元素的交互逻辑。

使用命令行,相当于以一种更加直接的方式来操作电脑,在 Linux 和 macOS 下,一些常见的命令行命令包括:

在命令行中编译与执行程序

image

如果你已经在 mono 官网下载并安装了 mono 环境(http://www.mono-project.com/download/),那么你已经可以在终端中执行下面的命令:

mcs Program.cs

编译代码,生成一个 Program.exe 文件,再:

mono Program.exe

执行程序(因为 macOS 等 Windows 以外的系统没有办法直接执行 exe 文件)

IDE

IDE 是集成开发环境(Integrated Development Environment)的简称。从结果上看,可以简单理解成一个启动慢、占用资源多,同时功能也很多的编辑器。通过 IDE,基本上可以通过点菜单上的按钮就可以进行「编译 + 执行 + 调试」的全部工作。如果你安装了 Unity,那么已经自动为你安装了 mono 提供的 IDE:MonoDevelop。

直接打开 MonoDevelop,新建一个 Console App 项目,再点击像播放按钮一样的执行按钮,就一步完成了「编译 + 执行」的工作。Mono 会在下方为你启动一个命令行界面来显示结果。

在调试 Unity 项目时,一些临时变量不可能打印到真实的软件界面中,因此通过控制台(Console)来调试是十分方便的。

第一行代码

namespace CUC.DigitalArt
{
  class Program
  {
    static void Main()
    {
      System.Console.WriteLine("Hello World!");
    }
  }
}

这段程序的效果是在命令行中打印出 Hello World! 这句话。一切 C# 程序进行的操作本质上就是调用一个又一个「方法」,而「方法」内又可以调用别的「方法」。

观察这段程序,可以发现整个程序被分成了三个嵌套的部分:

三个部分各自用一对花括号({})来标识自己的范围,一个 C# 程序的项目的结构可以是这样的:

命名空间(Namespace)

「命名空间-类-方法」是「方法」的全名。如果我的房间有个方法叫做「开门」,那么我需要通过「中国传媒大学动画学院」「106教室」来定位到(106教室的)「开门方法」,在上面这段例子中:

System.Console.WriteLine("Hello World!");

这一行代码里,WriteLine 是方法名、以点(.)分隔,左边的 Console 是类名、再左边的 System 是命名空间。

如果你在代码的开头使用了 using 语句,那么整个文件里都不需要再次出现这个命名空间了,比如上面的程序可以写成这样:

using System;

namespace CUC.DigitalArt
{
  class Program
  {
    static void Main()
    {
      Console.WriteLine("Hello World!");
    }
  }
}

为自己的程序起一个命名空间是便于他人引用的习惯,没有 CUC.DigitalArt 这样的命名空间,别人的程序里就不能用 Program 作为 class 名了

类(Class)

类是面向对象编程的基础,任何方法、变量…都一定会依附在一个类上,正如同 WriteLine 方法依附在 Console 类上一样。我们会在面向对象概念的学习中,了解到类的更多使用方法。

有关类最基本的理解是,类是对象的模子,对象(Object)是类(Class)实例化(Instantiate)出的实例(Instant)

方法(Method)

方法就是 C# 里在其他语言中提到的函数(Function),是一段可以通过输入参数、被重复调用的代码。

声明方法

using System;

namespace CUC.DigitalArt
{
  class Program
  {
    static void Main()
    {
      string input = Console.ReadLine();

      int inputNumber = int.Parse(input);

      int result = Adder(inputNumber, 1);

      Console.WriteLine(result);
    }

    public static int Adder(int x, int y)
    {
      return x + y;
    }
  }
}

修改这段程序,在 Main 方法以外又声明了一个 Adder 方法。Adder 方法的作用是把传入的两个参数 x 和 y 相加并返回结果。观察 Adder 方法的声明过程,一共有六个部分:publicstaticintAdder(int x, int y){ return x + y;},他们分别是「访问修饰符」、「修饰符」、「方法返回类型」、「方法名」、「方法参数」和「方法体」

通过「修饰符 修饰符 返回类型 方法名(方法参数){方法体}」这些一起来声明了一个方法。并不是所有的修饰符都是必须的,如果没有主动声明修饰符,那么方法会默认设置修饰符的值。

一个类中的 Main 方法是会被第一个执行的,在一个程序中也往往只会有一个 Main 方法。一般没有返回值,因为我们把 Main 方法的返回类型设置为 void

调用方法

在方法名后使用一对括号 () 来调用,同时还可以在这个括号中传入方法需要的「参数」,就好像 Console.WriteLine("Hello World!"); 做的那样。

image

以上的例子就是 C# 基本的语法和简单的说明,接下来就可以进入到面向对象部分的理解了。解释永远不可能完善,这意味着你需要在遇到任何不太清楚的概念时都立刻查清楚、想明白这些词是什么意思。为了获得高质量的答案,你需要:

再次推荐阅读 treehouse 网站提供的 C# 课程,视频、图文、题目应有尽有:https://teamtreehouse.com/tracks/learn-c

上一篇下一篇

猜你喜欢

热点阅读