C# 中的内部与公共

2024-03-31

我想知道两者之间的区别public and internal可见性修饰符。

我们什么时候应该使用internal在课堂上以及何时public?我对什么时候应该使用方法感到困惑public or internal.

我读到了internal可以通过程序集访问,同时public也可以通过组装来使用。那么差别到底在哪里呢?


public从任何地方都可以看到。

internal仅在程序集中可见。

您倾向于仅使用内部来保护内部 API。例如,您可以公开一个方法的多个重载:

public int Add(int x, int y)
public int Add(int x,int y, int z)

两者都调用内部方法:

internal int Add(int[] numbers)

然后,您可以对方法进行很多复杂的处理,但使用外观方法来“保护”它,这可以帮助程序员正确调用该方法。 (例如,使用数组参数的实现方法可以具有任意值限制。)

另外值得注意的是,使用反射,任何和所有方法都可以调用,无论其可见性如何。另一个控制/获取对内部隐藏 API 的访问的“黑客”。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# 中的内部与公共 的相关文章

  • 为什么我不能用 `= delete;` 声明纯虚函数?

    Intro 纯虚函数使用通用语法声明 virtual f 0 然而 自 c 11 以来 有一种方法可以显式地传达non existence 特殊 成员函数的 Mystruct delete eg default constructor Q
  • 为什么大多数 C 开发人员使用 Define 而不是 const? [复制]

    这个问题在这里已经有答案了 在许多程序中 define与常量具有相同的用途 例如 define FIELD WIDTH 10 const int fieldWidth 10 我通常认为第一种形式优于另一种形式 它依赖于预处理器来处理基本上是
  • 构造函数中显式关键字的使用

    我试图了解 C 中显式关键字的用法 并查看了这个问题C 中的explicit关键字是什么意思 https stackoverflow com questions 121162 但是 那里列出的示例 实际上是前两个答案 对于用法并不是很清楚
  • JSON 数组到 C# 列表

    如何将这个简单的 JSON 字符串反序列化为 C 中的列表 on4ThnU7 n71YZYVKD CVfSpM2W 10kQotV 这样 List
  • 从多个类访问串行端口

    我正在尝试使用串行端口在 arduino 和 C 程序之间进行通信 我对 C 编程有点陌生 该程序有多种用户控制形式 每一个都需要访问串口来发送数据 我需要做的就是从每个类的主窗体中写入串行端口 我了解如何设置和写入串行端口 这是我的 Fo
  • 暂停下载线程

    我正在用 C 编写一个非常简单的批量下载程序 该程序读取要下载的 URL 的 txt 文件 我已经设置了一个全局线程和委托来更新 GUI 按下 开始 按钮即可创建并启动该线程 我想要做的是有一个 暂停 按钮 使我能够暂停下载 直到点击 恢复
  • 当前的 c++ 工作草案与当前标准有何不同

    通过搜索该标准的 PDF 版本 我最终找到了这个链接C 标准措辞草案 http www open std org jtc1 sc22 wg21 docs papers 2012 n3376 pdf从 2011 年开始 我意识到我可以购买最终
  • 如何识别 WPF 文本框中的 ValidationError 工具提示位置

    我添加了一个箭头来指示工具提示中的文本框 当文本框远离屏幕边缘时 这非常有效 但是当它靠近屏幕边缘时 工具提示位置发生变化 箭头显示在左侧 Here is the Image Correct as expected since TextBo
  • 生产代码中的 LRU 实现

    我有一些 C 代码 需要使用 LRU 技术实现缓存替换 目前我知道两种实现LRU缓存替换的方法 每次访问缓存数据时使用时间戳 最后比较替换时的时间戳 使用缓存项的堆栈 如果最近访问过它们 则将它们移动到顶部 因此最后底部将包含 LRU 候选
  • 为什么我不应该对不是由 malloc() 分配的变量调用 free() ?

    我在某处读到 使用它是灾难性的free删除不是通过调用创建的对象malloc 这是真的 为什么 这是未定义的行为 永远不要尝试它 让我们看看当您尝试时会发生什么free 自动变量 堆管理器必须推断出如何获取内存块的所有权 为此 它要么必须使
  • 通过 NHibernate 进行查询,无需 N+1 - 包含示例

    我有一个 N 1 问题 我不知道如何解决它 可以在这个问题的底部找到完全可重复的样本 因此 如果您愿意 请创建数据库 设置 NUnit 测试和所有附带的类 并尝试在本地消除 N 1 这是我遇到的真实问题的匿名版本 众所周知 这段代码对于帮助
  • 将构建日期放入“关于”框中

    我有一个带有 关于 框的 C WinForms 应用程序 我使用以下方法将版本号放入 关于 框中 FileVersionInfo GetVersionInfo Assembly GetExecutingAssembly Location F
  • 当“int”处于最大值并使用 postfix ++ 进行测试时,代码定义良好吗?

    示例 未定义行为的一个示例是整数溢出的行为 C11dr 3 4 3 3 int溢出是未定义的行为 但这是否适用于存在循环的以下内容 并且不使用现在超出范围的副作用i 特别是 这是否后缀增量规格帮助 结果的值计算在副作用之前排序 更新操作数的
  • 在 C 中使用 GNU automake 中的解析器

    我是 GNU autotools 的新手 在我的项目中使用了 lex 和 yacc 解析器 将它们作为 makefile am 中的源代码会产生以下错误 配置 in AC CHECK PROGS YACC bison yacc none i
  • 在类的所有方法之前运行一个方法

    在 C 3 或 4 中可以做到这一点吗 也许有一些反思 class Magic RunBeforeAll public void BaseMethod runs BaseMethod before being executed public
  • 耐用功能是否适合大量活动?

    我有一个场景 需要计算 500k 活动 都是小算盘 由于限制 我只能同时计算 30 个 想象一下下面的简单示例 FunctionName Crawl public static async Task
  • 结构体指针的动态数组

    我必须使用以下代码块来完成学校作业 严格不进行任何修改 typedef struct char firstName char lastName int id float mark pStudentRecord pStudentRecord
  • strcmp 给出分段错误[重复]

    这个问题在这里已经有答案了 这是我的代码给出分段错误 include
  • 使用 Crypto++ 获取 ECDSA 签名

    我必须使用 Crypto 在变量中获取 ECDSA 签名 我在启动 SignMessage 后尝试获取它 但签名为空 我怎样才能得到它 你看过 Crypto wiki 吗 上面有很多东西椭圆曲线数字签名算法 http www cryptop
  • 匿名结构体作为返回类型

    下面的代码编译得很好VC 19 00 23506 http rextester com GMUP11493 标志 Wall WX Za 与VC 19 10 25109 0 标志 Wall WX Za permissive 这可以在以下位置检

随机推荐

  • 新 PayPal 结账时大型购物车的 PayPal HTML 按钮损坏

    几周以来 我们一直在与 PayPal 支付标准表格问题作斗争 我们多年来一直运行相同的代码 但注意到我们的较大发票 包含 20 多个项目 最近在提交给 PayPal 时出现白屏死机 沙盒中的测试和以前一样运行良好 在到处搜索后 我找不到任何
  • 桌面应用程序转换器

    我使用 Desktop Bridge 一段时间了 最 近我开始遇到问题 它停止构建软件包 我尝试将其安装在不同的虚拟机上 但遇到了相同的错误 PowerShell Error Record DesktopAppConverter error
  • 如何使 CATransform3dMakeRotation 以另一种方式旋转?并链在一起

    我第一次使用一些核心动画 在实现可以翻转的扑克牌的过程中 我决定使用CALayer显示内容 不确定我将如何获得两侧 但这是另一个问题 并且我需要能够翻转它 移动它等等 我在用着CATransaction取得了一些成功 在下面的代码片段中 卡
  • 以识别自定义 if 语句的方式解析纯文本

    我有以下字符串 string The man has NUM DOGS dogs 我通过以下函数运行它来解析它 function parse text string global num dogs string str replace NU
  • Visual Studio 2010 中的代码指标

    我想知道 Visual Studio 2010 中的代码指标有哪些可用选项 我知道可以在 IDE 中对代码运行手动指标 但是还有其他选项吗 我想做的是 我和我的团队正在运行 Team Foundation Server 2010 并且我们设
  • phpunit 测试类未找到错误,而类存在?

    这是我的目录结构 application modules admin models User php 这是我的用户模型类 class admin Model User User php 这是我的 UserTest 类 带有简单的 Asser
  • 计算直线与 x 轴之间的角度

    我目前正在为 Android 开发一个简单的 2D 游戏 我有一个位于屏幕中心的固定对象 我试图让该对象旋转并指向用户触摸的屏幕区域 我有代表屏幕中心的常量坐标 我可以获得用户点击的点的坐标 我正在使用此论坛中概述的公式 如何获得两点之间的
  • glsl 中的 mat3(mat4 矩阵)语句有何作用?

    我正在做每个片段照明 并且在校正法线向量时 我得到了以下代码 vec3 f normal mat3 MVI normal 其中 MVI 是 mat4 MVI transpose inverse ModelViewMatrix 那么返回之后是
  • 如何处理 Blackberry Storm 中的 ButtonField 和 BitmapField 点击(触摸)事件?

    我创建了一个 ButtonField 和一个 BitmapField 像 public class MyCanvas extends MainScreen implements FieldChangeListener HorizontalF
  • 如何在Table View定制过程中调用“willDisplayHeaderView”方法?

    我想调用这些方法 void tableView UITableView tableView willDisplayHeaderView UIView view forSection NSInteger section NS AVAILABL
  • 如何防止标签在移动屏幕 Chart.js 上重叠

    我正在使用这个例子jsfiddle https jsfiddle net Trekels fec0v5kj 但是当我使用小屏幕时标签开始像这样重叠 我可以做什么来预防它 我想让它完全响应 我尝试改变长度和其他长宽比等 但没有成功 var c
  • 缓存是个好主意吗?如果是的话,在哪里?

    我有一个 ASP NET 网站 每天有 10 25 000 名访问者 节假日前的峰值超过 60 000 人 由于它是一个内容网站 因此页面 访问量也很高 我有一些特定的页面 它们产生了大约 60 的流量 这些页面有点复杂 并且数据库较多 s
  • Xcode 4.2:如何从子项目导入 .h 文件

    我是 Xcode 子项目的新手 在我的 iPhone 应用程序项目中MyProject 我正在尝试将一些常见代码重构为一个名为的静态库项目MyLibrary 我创建后MyLibrary并移动代码 MyProject不再编译 错误在于MyPr
  • 在 openCV 中连接足够近的轮廓

    我有一组从图像中检测到的轮廓 斑点 问题在于 一些斑点在斑点检测和平滑过程中被分割 我尝试使用以下代码 Mat outlines Mat zeros m3 size CV 8UC3 findContours m3 contours CV R
  • 多匹配布尔提升

    我正在尝试执行以下操作 curl X POST localhost 9200 magento customer search pretty 1 d query bool must multi match query john fields
  • cygwin git下的KDiff3不会调用

    为了与互联网上发布的许多解决方案保持一致 我安装了 KDiff3 并进行了修改 gitconfig如下所示来使用它 尽管如此 当我跑步时git diff HEAD HEAD在存储库中进行测试 我得到了默认工具执行的差异 我在 Windows
  • NestJS 在非模块文件中注入模块服务

    我有一个用于视图渲染的函数文件 我想在这里使用 Nestjs 模块服务 我的渲染文件是这样的 export default parse render 因此 为了在这里使用模块服务 我尝试像这样注入 import Inject from ne
  • Django URL 模板匹配(除了模式之外的所有内容)

    我需要一个 django 正则表达式 它实际上适用于 url 路由器来执行以下操作 匹配路由中不包含 api 的所有内容 以下不起作用 因为 django 无法反转 r api 通常的方法是对路由声明进行排序 以便包罗万象的路由被 api路
  • 下载文件时强制显示“另存为”对话框

    下面的代码将文件保存到用户的磁盘上 function handleSaveImg event const image canvas toDataURL const saveImg document createElement a saveI
  • C# 中的内部与公共

    我想知道两者之间的区别public and internal可见性修饰符 我们什么时候应该使用internal在课堂上以及何时public 我对什么时候应该使用方法感到困惑public or internal 我读到了internal可以通