第二章 类与名称空间

一、类(class)

C# 是一门面向对象的语言,说到类,自然也离不开对象,以下是对类的介绍及类与对象的关系。

类 (class) 是最基础的 C# 类型。类是一个数据结构,将状态(字段)和操作(方法和其他函数成员)组合在一个单元中。类为动态创建的类实例 (instance) 提供了定义,实例也称为对象 (object)。类支持继承 (inheritance) 和多态性 (polymorphism),这是派生类 (derived class) 可用来扩展和专用化基类 (base class) 的机制。

使用类声明可以创建新的类。类声明以一个声明头开始,其组成方式如下:先指定类的特性和修饰符,然后是类的名称,接着是基类(如有)以及该类实现的接口。声明头后面跟着类体,它由一组位于一对大括号 { 和 } 之间的成员声明组成。

例:

cs 复制代码
public class Point()
{
    public int x,y;
    public Point(int x,int y)
    {
        this.x = x;
        this.y = y;
    }
}

类的实例往往是使用new运算符创建,当使用new创建实例后会为新的实例分配内存、调用改函数的构造方法对函数值进行初始化,并返回对该实例的引用,如下代码为创建了两个实例:

cs 复制代码
Point p1 = new Point(0,0);
Point p2 = new Point(2,3);

注意:当对象不再使用时,该对象占用的内存将会被回收,C#无需手动回收垃圾,每当NEW一个对象时便会触发一次GC自动将没用的对象内存进行回收。

二、名称空间(namespace)

名称空间也叫命名空间,其作用是提供一种让一组名称与其他名称分隔开的方式。在一个命名空间中声明的类的名称与另一个命名空间中声明的相同的类的名称不冲突。

类似于Java里面的package,在不同的包下面允许有相同名称的类;换句话说,就是不同文件夹下可以允许有相同名称的文件夹或文件(正常一个文件夹下不允许有同名的文件夹或文件)

名称空间的定义为以namespace关键字开始,后跟名称空间的名称,如

cs 复制代码
namespace MyNameSpace{
    //代码
}

引用自定义或系统自带的名称空间时需要使用using关键字,它可以提前告知编译器随后的代码使用指定对应的名称空间,用法如下:

cs 复制代码
using System;
using MyfirstNamespace;
using MySecondNamespace;

namespace MyfirstNamespace
{
    class SpaceTest1
    {
        public void Test1()
        {
            Console.WriteLine("using firstNamespace!");
        }
    }
}

namespace MySecondNamespace
{
    class SpaceTest2
    {
        public void Test2()
        {
            Console.WriteLine("using secondNamespace");
        }
    }
}

也可以嵌套使用命名空间,如:

cs 复制代码
using System;
using MyfirstNamespace;
using MySecondNamespace;

namespace MyfirstNamespace
{
    class SpaceTest1
    {
        public void Test1()
        {
            Console.WriteLine("using firstNamespace!");
        }
    }

    //嵌套使用
    namespace MySecondNamespace
    {
        class SpaceTest2
        {
            public void Test2()
            {
                Console.WriteLine("using secondNamespace");
            }
        }
    }
}
相关推荐
知远同学3 小时前
Anaconda的安装使用(为python管理虚拟环境)
开发语言·python
小徐Chao努力4 小时前
【Langchain4j-Java AI开发】09-Agent智能体工作流
java·开发语言·人工智能
CoderCodingNo4 小时前
【GESP】C++五级真题(贪心和剪枝思想) luogu-B3930 [GESP202312 五级] 烹饪问题
开发语言·c++·剪枝
kylezhao20194 小时前
第1章:第一节 开发环境搭建(工控场景最优配置)
开发语言·c#
啃火龙果的兔子4 小时前
JavaScript 中的 Symbol 特性详解
开发语言·javascript·ecmascript
热爱专研AI的学妹4 小时前
数眼搜索API与博查技术特性深度对比:实时性与数据完整性的核心差异
大数据·开发语言·数据库·人工智能·python
Mr_Chenph5 小时前
Miniconda3在Windows11上和本地Python共生
开发语言·python·miniconda3
阿狸远翔5 小时前
Protobuf 和 protoc-gen-go 详解
开发语言·后端·golang
永远前进不waiting5 小时前
C复习——1
c语言·开发语言
伯明翰java5 小时前
Java数据类型与变量
java·开发语言