轨道
/
C#
C#
/
练习
/
红队对蓝队:达尔文风格
红队对蓝队:达尔文风格

红队对蓝队:达尔文风格

学习练习

简介

命名空间

命名空间是一种把相关代码组织在一起、避免名称冲突的方式,除了最简单的代码库以外,几乎所有代码库都会用到它。

语法如下:

namespace MyNameSpace
{
    public class MyClass {}

    public class OtherClass {}
}

在命名空间作用域之外引用其中的类型时,需要用点号语法给类型名加上前缀。另一种更常见的做法是在文件开头(或某个命名空间内)加上 using 指令,这样使用类型时就不需要加前缀。在同一个命名空间内,则不需要限定类型名。

namespace MySpace
{
    public class MyClass {}

    public class Foo
    {
        public void Bar()
        {
            var baz = new MyClass();
        }
    }
}

public class Qux
{
    public void Box()
    {
        var nux = new MySpace.MyClass();
    }
}

namespace OtherSpace
{
    using MySpace;

    public class Tix
    {
        public void Jeg()
        {
            var lor = new MyClass();
        }
    }
}

你可以用 using MyAlias = MySpace; 这样的语法给命名空间起别名,之后凡是能使用该命名空间的地方,都可以使用这个别名。

说明

管理层开始对遥控赛车项目 remote-control-competition 应用达尔文原则了。开发者被分成了两支队伍,Red 和 Blue,任务是各自独立地改进设计。他们不需要操心另一支队伍的设计决策。

你被要求看一下这些代码,看看如何才能最好地把两支队伍的成果合并起来用于测试。

1. 找到一种更合适的方式来隔离两支队伍的代码

请使用 namespaces 来更好地表达代码的意图。

目前,像 Motor 和 Telemetry 这样的重要类型,更不用说 RemoteControlCar 本身了,都嵌套在一个外围的静态类 <Color>RemoteControlCarTeam 里。这个外围类唯一的用途就是让同名的类型能够在程序中并存。用命名空间来表达这一点会更好。在下一个练习中你会看到,就这些用途而言,namespace 比 static class 更有优势。

2. 简化命名体系

尽管管理层坚持要在这两个定义中把队伍叫作 RedRemoteControlCarTeam 和 BlueRemoteControlCarTeam,但在引用这些队伍时,这些名字相当笨拙。想办法在构建赛车时使用更短的标识符 Red 和 Blue。

通过 GitHub 编辑 链接将在新窗口或新标签页中打开
C# Exercism

准备好开始 红队对蓝队:达尔文风格 了吗?

注册 Exercism,借助 62 个概念178 个练习 和真人导师指导,学习并掌握 C#,全部免费。