C#结构体、枚举与封装

文章目录

C#枚举

  枚举是一组命名整型常量。枚举类型是使用enum关键字声明的。

public enum <enum_name>

{

​ enumeration list

};

  enum_name 指定枚举的类型名称。

  enumeration list 是一个用逗号分隔的标识符列表。

  枚举列表中的每个符号代表一个整数值,一个比它前面的符号大的整数值。默认情况下,第一个枚举符号的值是 0

csharp 复制代码
namespace MyStruct
{
    enum day
        {
            Sun,
            Mon,
            Tue,
            Wed,
            Thu,
            Fri,
            Sat
        };
    class Program
    {
        static void Main(string[] args)
        {
           Console.WriteLine("{0}, {1}", (int)day.Sun, (int)day.Fri);
        }
    }
}

C#结构体

  结构体是一种值类型,用于组织和存储相关数据。

csharp 复制代码
struct Books
{
    public string bookName;
    public string bookAuthor;
    public double bookPrice;
    public int bookId;
}
namespace MyStruct
{
    class Program
    {
        static void Main(string[] args)
        {
            Books book1;
            book1.bookName = "C和指针";
            book1.bookAuthor = "肯尼斯·里科";
            book1.bookPrice = 99.79;
            book1.bookId = 20240714;

            Console.WriteLine("name:{0}, author:{1}, price:{2:f2}, id:{3}", book1.bookName, book1.bookAuthor, book1.bookPrice, book1.bookId);
        }
    }
}
C#结构体特点

结构可带有方法、字段、索引、属性、运算符方法和事件,适用于表示轻量级数据的情况,如坐标、范围、日期、时间等。

与类不同,结构不能继承其他的结构或类。

结构不能作为其他结构或类的基础结构。

结构可实现一个或多个接口。

如果不使用 New 操作符,只有在所有的字段都被初始化之后,字段才被赋值,对象才被使用。

结构变量通常分配在栈上,这使得它们的创建和销毁速度更快。但是,如果将结构用作类的字段,且这个类是引用类型,那么结构将存储在堆上。

封装

  封装是为了防止对实现细节的访问。封装可以通过访问限定符限制访问权限。

访问限定符

|--------------------|---------------------|
| 访问限定符 | 描述 |
| public | 公共的,所有对象均可访问 |
| private | 私有的,只有对象本身内部可以访问 |
| protected | 保护的,类的对象及其子类对象可以访问 |
| internal | 同一程序集的对象可以访问 |
| protected internal | 访问限于当前程序集或派生自包含类的类型 |

以访问 protected internal 访问限于当前程序集或派生自包含类的类型

相关推荐
天才程序YUAN28 分钟前
Windows 资源管理器左侧 WPS 云盘残留项删除教程:卸载后仍显示怎么办?
windows·wps
天才程序YUAN34 分钟前
华硕主板 Armoury Crate 开机弹窗彻底解决教程
windows
原创小甜甜1 小时前
Windows 蓝屏自救手册:从紧急记录到硬件排查的完整指南
windows·stm32·单片机
189228048612 小时前
NV041固态MT29F16T08GSLCEM9-QBES:C
人工智能·算法·microsoft·缓存·性能优化
万粉变现经纪人2 小时前
2026最新Windows11系统CMD安装Claude Code 快速接入DeepSeek V4 Pro在VSCode编程工具中使用保姆级入门教程指南
linux·运维·ide·windows·vscode·macos·编辑器
编码者卢布2 小时前
【Azure App Service】应用服务中的SNAT (Source Network Address Translation 源网络地址转化)
microsoft·azure
专注VB编程开发20年2 小时前
工控上位机开发为什么固死.net 4.5.2sdk?适配win7
python·信息可视化·c#
jike88ai2 小时前
Windows版Claude Code安装与API对接教程(附常见问题解决)
windows·gpt·node.js·claude·claudecode·88api
跨境牛马哥3 小时前
2026 Claude Code爬虫指南:如何搭建AI自动化数据采集系统?
microsoft
狂人开飞机3 小时前
18. 中介者模式(Mediator Pattern)
设计模式·c#·中介者模式