当前位置: 首页 > news >正文

C#类修饰符功能与范围详解

C#类修饰符功能与范围详解

    • 1. 访问修饰符
      • public
      • internal
      • protected internal
      • private protected (C# 7.2+)
    • 2. 继承修饰符
      • abstract
      • sealed
    • 3. 静态修饰符
      • static
    • 4. 部分类修饰符
      • partial
    • 5. 不安全代码修饰符
      • unsafe
    • 修饰符组合规则
      • 有效组合示例:
      • 无效组合示例:
    • 嵌套类的访问修饰符
    • 总结表格

在C#中,类的声明可以使用多种修饰符来控制其可见性、继承性和其他特性。以下是主要的类修饰符及其功能和范围限制:

1. 访问修饰符

public

  • 功能:无访问限制,任何代码都可以访问
  • 范围:同一程序集或其他程序集
public class PublicClass
{// 可在任何地方访问
}

internal

  • 功能:只能在当前程序集内访问
  • 范围:同一程序集(默认访问级别)
internal class InternalClass
{// 只能在当前程序集内访问
}

protected internal

  • 功能:当前程序集或派生类可访问
  • 范围:同一程序集或不同程序集中的派生类
protected internal class ProtectedInternalClass
{// 当前程序集或派生类可访问
}

private protected (C# 7.2+)

  • 功能:当前程序集中的派生类可访问
  • 范围:同一程序集中的派生类
private protected class PrivateProtectedClass
{// 仅同一程序集中的派生类可访问
}

2. 继承修饰符

abstract

  • 功能:抽象类,不能实例化,只能被继承
  • 限制:必须包含至少一个抽象成员
public abstract class Animal
{public abstract void MakeSound();public void Sleep() { /* 实现 */ }
}

sealed

  • 功能:密封类,不能被继承
  • 限制:不能作为基类
public sealed class String : ICloneable
{// 不能被继承
}

3. 静态修饰符

static

  • 功能:静态类,仅包含静态成员
  • 限制:不能实例化,不能继承或被继承
public static class Math
{public static double PI = 3.14159;public static int Add(int a, int b) => a + b;
}

4. 部分类修饰符

partial

  • 功能:允许类定义分布在多个文件中
  • 限制:所有部分必须使用相同的访问修饰符
// File1.cs
public partial class MyClass
{public void Method1() { }
}// File2.cs
public partial class MyClass
{public void Method2() { }
}

5. 不安全代码修饰符

unsafe

  • 功能:允许在类中使用不安全代码(指针等)
  • 限制:需要启用不安全代码编译选项
public unsafe class PointerExample
{public void Process(int* ptr){*ptr = 10;}
}

修饰符组合规则

有效组合示例:

public sealed class MySealedClass { }
internal abstract class MyAbstractClass { }
public static class UtilityClass { }
private protected partial class MyPartialClass { }

无效组合示例:

static sealed class InvalidClass { } // static 隐含 sealed
abstract sealed class InvalidClass { } // 矛盾修饰符
private public class InvalidClass { } // 多个访问修饰符

嵌套类的访问修饰符

嵌套类可以使用所有访问修饰符,作用域相对于包含类:

public class ContainerClass
{private class NestedPrivate { }        // 仅容器类可访问protected class NestedProtected { }    // 容器类及其派生类可访问internal class NestedInternal { }      // 同一程序集可访问public class NestedPublic { }          // 任何地方可访问
}

总结表格

修饰符功能范围限制可否实例化可否继承
public公开访问无限制
internal内部访问同一程序集
abstract抽象类无限制
sealed密封类无限制
static静态类无限制
partial分部类无限制

这些修饰符可以灵活组合使用,为C#类提供了丰富的访问控制和功能特性。

http://www.dtcms.com/a/618229.html

相关文章:

  • 一个网站怎么留住用户做的比较好的国外网站一级页面布局分析
  • 可信网站是否必须做南阳网站备案
  • 【Linux驱动开发】Linux 设备驱动中的阻塞与非阻塞 I/O:机制、源码与示例
  • HarmonyOS新闻卡片组件开发实战:自定义组件与List渲染深度解析
  • 解决:jenkins Exception java.lang.NoSuchFieldError: SNAKE_CASE
  • 如何实现Redis安装与使用的详细教程
  • tensorflow+yolo图片训练和图片识别系统
  • 唯品会 一家专门做特卖的网站现在前端开发用什么技术
  • 图神经网络分享系列-GraphSage(Inductive Representation Learning on Large Graphs) (一)
  • leetcode对称二叉树
  • 网站开发设计心得及体会河南建设工程造价管理协会网站
  • 深度学习实战:(2)用 TensorFlow 1.x 构建手语识别模型
  • 人工智能、机器学习、深度学习:技术革命的深度解析
  • 东营seo网站建设费用广告设计专业自我介绍
  • 【Linux】进程状态、进程优先级、进程切换和调度
  • 【Android】View 的工作原理
  • 行人跌倒智能检测系统:YOLOv8/V5/V6/V7 多模型 + PySide6 界面 深度学习 多场景适配 大数据 (建议收藏)✅
  • 山东网络推广图片福州seo网站管理
  • C#中Task的详细用法
  • 自己怎么做企业网站建设免费代理服务器ip地址
  • 前端 css selector 的层叠 优先级与继承
  • 基于python二手房数据分析系统 可视化 Scrapy 爬虫 链家二手房数据 Django框架 基于用户的协同过滤推荐 二手房推荐系统 (源码)✅
  • Rust 内部可变性的访问器模式
  • ThinkPHP8学习篇(十二):模型关联(二)
  • 药品行业做网站windows wordpress
  • 【读代码】LightRAG轻量级知识图谱增强检索系统的架构与实现
  • arm架构设备使用FISCO BCOS上搭建多机区块链网络
  • 【Android】LRU 与 Android 缓存策略
  • 使用 Python 语言 从 0 到 1 搭建完整 Web UI自动化测试学习系列 26--数据驱动--参数化处理 Excel 文件 3
  • 第41节:第三阶段总结:打造一个AR家具摆放应用