概述

在使用 Visual Studio 进行开发时,类视图 (Class View)对象浏览器 (Object Browser) 是两个不可或缺的工具,它们帮助开发者直观地查看和理解项目的代码结构。这些工具使用一系列图标来代表不同的代码实体(Code Entities),如命名空间、类、方法、属性等。准确识别这些图标对于快速导航和理解代码至关重要。本文将对 Visual Studio 中的这些图标进行详细解读,并提供相关代码示例和图表,助您彻底掌握其含义。

图标含义详解表

以下表格完整列出了 Visual Studio 类视图与对象浏览器中常见的图标及其对应的中英文含义。此表是理解后续内容的基础。

图标 (Icon) 英文含义 (English Meaning) 中文含义 (Chinese Meaning)
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 Namespace 命名空间
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 Method or Function 方法或函数
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 Class
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 Operator 运算符
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 Interface 接口
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 Property 属性
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 Structure 结构
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 Field or Variable 字段或变量
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 Union 联合
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 Event 事件
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 Enum 枚举
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 Constant 常数
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 TypeDef TypeDef (类型定义)
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 Enum Item 枚举项
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 Module 模块
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 Map Item 映射项
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 Intrinsic 内部
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 External Declaration 外部声明
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 Delegate 委托
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 Macro
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 Exception 异常
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 Template 模板
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 Map 映射
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 Unknown or Error 未知或错误
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 Global 全局
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 Type Forwarding 类型转发
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 Extension Method 扩展方法

核心概念详解与代码示例

下面我们选取几个最核心和常见的代码实体进行详细说明,并辅以 C# 代码示例。

1. 命名空间 (Namespace)

命名空间 用于组织代码,防止命名冲突。它像一个容器,将相关的类、接口、结构等组合在一起。

// 定义一个名为 Company.Product 的命名空间
namespace Company.Product
{
    // 在此命名空间内定义的类、接口等都属于这个分组
    public class MyClass
    {
        // ... 类成员
    }
}

2. 类 (Class) 与 结构 (Structure)

是面向对象编程的基本构建块,是定义对象蓝图的引用类型。结构 是一种值类型,通常用于表示轻量级对象。

namespace Example
{
    // ![](media/image3.png) 这是一个类 (Class),引用类型
    public class PersonClass
    {
        // ![](media/image8.png) 这是一个字段 (Field)
        public string Name;
        
        // ![](media/image2.png) 这是一个方法 (Method)
        public void Introduce()
        {
            Console.WriteLine($"Hello, I'm {Name}.");
        }
    }

    // ![](media/image7.png) 这是一个结构 (Structure),值类型
    public struct PointStruct
    {
        // ![](media/image8.png) 公共字段
        public int X;
        public int Y;

        // ![](media/image2.png) 方法
        public void PrintCoordinates()
        {
            Console.WriteLine($"({X}, {Y})");
        }
    }
}

3. 接口 (Interface) 与 枚举 (Enum)

接口 定义了一组契约(方法、属性、事件),实现接口的类或结构必须提供这些成员的具体实现。枚举 定义了一组命名的常数。

namespace Example
{
    // ![](media/image5.png) 这是一个接口 (Interface)
    public interface IDrawable
    {
        // ![](media/image6.png) 接口中定义的属性
        string Color { get; set; }
        
        // ![](media/image2.png) 接口中定义的方法
        void Draw();
    }

    // ![](media/image11.png) 这是一个枚举 (Enum),定义形状类型
    public enum ShapeType
    {
        // ![](media/image14.png) 这些都是枚举项 (Enum Item)
        Circle,    // 圆形
        Rectangle, // 矩形
        Triangle   // 三角形
    }
}

4. 属性 (Property) 与 方法 (Method)

属性 是提供灵活机制来读取、写入或计算私有字段值的成员。方法 是包含一系列语句的代码块。

namespace Example
{
    public class BankAccount
    {
        // ![](media/image8.png) 私有字段,通常不直接对外暴露
        private decimal _balance;

        // ![](media/image6.png) 这是一个属性 (Property),提供对 _balance 的受控访问
        public decimal Balance
        {
            get { return _balance; }
            set
            {
                if (value >= 0)
                    _balance = value;
            }
        }

        // ![](media/image2.png) 这是一个方法 (Method),执行存款操作
        public void Deposit(decimal amount)
        {
            if (amount > 0)
            {
                Balance += amount; // 通过属性访问,可能包含验证逻辑
            }
        }
    }
}

5. 委托 (Delegate) 与 事件 (Event)

委托 是一种定义方法签名的类型,用于实现类型安全的回调函数。事件 是基于委托的发布-订阅机制,用于对象间发出通知。

namespace Example
{
    // ![](media/image18.png) 声明一个委托 (Delegate),定义了方法签名(返回void,接受一个string参数)
    public delegate void MessageHandler(string message);

    public class Publisher
    {
        // ![](media/image10.png) 声明一个事件 (Event),基于 MessageHandler 委托
        public event MessageHandler OnMessagePublished;

        public void PublishMessage(string msg)
        {
            Console.WriteLine($"发布消息: {msg}");
            // 触发事件,通知所有订阅者
            OnMessagePublished?.Invoke(msg);
        }
    }

    public class Subscriber
    {
        public void Subscribe(Publisher pub)
        {
            // 订阅事件,将自己的处理方法添加到发布者的事件列表中
            pub.OnMessagePublished += HandleMessage;
        }

        // 这个方法的签名必须与 MessageHandler 委托匹配
        private void HandleMessage(string message)
        {
            Console.WriteLine($"订阅者收到消息: {message}");
        }
    }
}

单词、短语表

以下是文档中出现的主要英文术语表,便于学习和查阅。

单词/短语 音标 词性 释义 词根/词缀 同义词/反义词 例句
Namespace /ˈneɪm speɪs/ n. 命名空间 name (名称) + space (空间) scope, container A namespace helps avoid naming conflicts. (命名空间有助于避免命名冲突。)
Class /klæs/ n. 拉丁语 classis (等级) type, blueprint The Car class defines the properties of a car. (Car 类定义了汽车的属性。)
Method /ˈmeθəd/ n. 方法 希腊语 methodos (追寻) function, procedure The Calculate method performs a complex operation. (Calculate 方法执行一个复杂操作。)
Interface /ˈɪntər feɪs/ n. 接口 inter- (在…之间) + face (面) contract, API The class implements the IDisposable interface. (该类实现了 IDisposable 接口。)
Property /ˈprɑːpərti/ n. 属性 proper (自己的) + -ty (名词后缀) attribute, characteristic The Length property gets the string's length. (Length 属性获取字符串的长度。)
Structure /ˈstrʌktʃər/ n. 结构 struct (建造) + -ure (名词后缀) struct, value type A struct in C# is a value type. (C# 中的 struct 是值类型。)
Variable /ˈveriəbl/ n. 变量 vary (变化) + -able (可…的) placeholder, identifier Assign a value to the variable before using it. (使用变量前先为其赋值。)
Delegate /ˈdelɪɡət/ n./v. 委托;委派 de- (离开) + legare (派遣) representative, callback The delegate points to a method with a specific signature. (委托指向一个具有特定签名的方法。)
Event /ɪˈvent/ n. 事件 e- (出) + venire (来) occurrence, notification The Button_Click event is raised when the user clicks. (用户点击时引发 Button_Click 事件。)
Enum /ˈiːnəm/ n. 枚举 enumeration 的缩写 enumeration The DayOfWeek enum lists the days. (DayOfWeek 枚举列出了星期几。)
Constant /ˈkɑːnstənt/ n./adj. 常数;恒定的 con- (共同) + stare (站立) fixed value, literal Declare a constant for the value of Pi. (为圆周率的值声明一个常数。)
Extension Method /ɪkˈstenʃən ˈmeθəd/ n. 扩展方法 extend (扩展) + method (方法) static utility method Extension methods allow adding methods to existing types. (扩展方法允许向现有类型添加方法。)

<-- https://learn.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2017/ide/class-view-and-object-browser-icons?view=vs-2017&viewFallbackFrom=vs-2022 -->

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐