C# 中的“常量正确性”

2023-12-01

const 正确性的要点是能够提供用户无法更改或删除的实例的视图。编译器通过指出何时从 const 函数中破坏常量性或尝试使用 const 对象的非 const 函数来支持这一点。那么,在不复制 const 方法的情况下,我是否可以在 C# 中使用具有相同目的的方法?

我知道不变性,但这并没有真正延续到容器对象,仅举一个例子。


我也多次遇到过这个问题,最终还是使用了接口。

我认为重要的是放弃 C# 是任何形式,甚至是 C++ 的演变的想法。它们是两种不同的语言,但语法几乎相同。

我通常通过定义类的只读视图来表达 C# 中的“常量正确性”:

public interface IReadOnlyCustomer
{
    String Name { get; }
    int Age { get; }
}

public class Customer : IReadOnlyCustomer
{
    private string m_name;
    private int m_age;

    public string Name
    {
        get { return m_name; }
        set { m_name = value; }
    }

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

C# 中的“常量正确性” 的相关文章

  • ROWNUM 的 OracleType 是什么

    我试图参数化所有现有的 sql 但以下代码给了我一个问题 command CommandText String Format SELECT FROM 0 WHERE ROWNUM lt maxRecords command CommandT
  • 在 LINQ 查询中返回不带时间的日期

    我正在编写一个查询 我想计算按日期联系我们的呼叫中心的次数 看起来很简单 但由于联系日期字段是日期时间字段 我得到了时间 因此当我按联系日期 时间 分组时 每个联系日期实例的计数为 1 所以 我想只按日期分组 而不按时间分组 下面是我用来查
  • 创建 DirectoryEntry 实例以供测试使用

    我正在尝试创建 DirectoryEntry 的实例 以便可以使用它来测试将传递 DirectoryEntry 的一些代码 然而 尽管进行了很多尝试 我还是找不到实例化 DE 并初始化它的 PropertyCollection 的方法 我有
  • fgets() 和 Ctrl+D,三次才能结束?

    I don t understand why I need press Ctrl D for three times to send the EOF In addition if I press Enter then it only too
  • SSH 主机密钥指纹与模式 C# WinSCP 不匹配

    我尝试通过 WinSCP 使用 C 连接到 FTPS 服务器 但收到此错误 SSH 主机密钥指纹 与模式不匹配 经过大量研究 我相信这与密钥的长度有关 当使用 服务器和协议信息 下的界面进行连接时 我从 WinSCP 获得的密钥是xx xx
  • Cygwin 下使用 CMake 编译库

    我一直在尝试使用 CMake 来编译 TinyXML 作为一种迷你项目 尝试学习 CMake 作为补充 我试图将其编译成动态库并自行安装 以便它可以工作 到目前为止 我已经设法编译和安装它 但它编译成 dll 和 dll a 让它工作的唯一
  • 使用 Microsoft Graph API 订阅 Outlook 推送通知时出现 400 错误请求错误

    我正在尝试使用 Microsoft Graph API 创建订阅以通过推送通知获取 Outlook 电子邮件 mentions 我在用本文档 https learn microsoft com en us graph api subscri
  • 跨多个控件共享事件处理程序

    在我用 C 编写的 Windows 窗体应用程序中 我有一堆按钮 当用户的鼠标悬停在按钮上时 我希望按钮的边框发生变化 目前我有以下多个实例 每个按钮一个副本 private void btnStopServer MouseEnter ob
  • c# Asp.NET MVC 使用FileStreamResult下载excel文件

    我需要构建一个方法 它将接收模型 从中构建excel 构建和接收部分完成没有问题 然后使用内存流导出 让用户下载它 不将其保存在服务器上 我是 ASP NET 和 MVC 的新手 所以我找到了指南并将其构建为教程项目 public File
  • 当 Cortex-M3 出现硬故障时如何保留堆栈跟踪?

    使用以下设置 基于 Cortex M3 的 C gcc arm 交叉工具链 https launchpad net gcc arm embedded 使用 C 和 C FreeRtos 7 5 3 日食月神 Segger Jlink 与 J
  • 使用 LINQ 查找列表中特定类型的第一个元素

    使用 LINQ 和 C 在元素列表中查找特定类型的第一个项目的最短表示法是什么 var first yourCollection OfType
  • 是否有比 lex/flex 更好(更现代)的工具来生成 C++ 分词器?

    我最近将源文件解析添加到现有工具中 该工具从复杂的命令行参数生成输出文件 命令行参数变得如此复杂 以至于我们开始允许它们作为一个文件提供 该文件被解析为一个非常大的命令行 但语法仍然很尴尬 因此我添加了使用更合理的语法解析源文件的功能 我使
  • C 中的位移位

    如果与有符号整数对应的位模式右移 则 1 vacant bit will be filled by the sign bit 2 vacant bit will be filled by 0 3 The outcome is impleme
  • 什么是 C 语言的高效工作流程? - Makefile + bash脚本

    我正在开发我的第一个项目 该项目将跨越多个 C 文件 对于我的前几个练习程序 我只是在中编写了我的代码main c并使用编译gcc main c o main 当我学习时 这对我有用 现在 我正在独自开展一个更大的项目 我想继续自己进行编译
  • 将应用程序从 Microsoft Access 迁移到 VB 或 C#.NET

    我目前正试图说服管理层需要将我们的应用程序之一移植到 NET 该应用程序已经发展成为 Access 中的一个庞然大物 SQL 后端 拥有 700 个链接表 650 个表单 子表单 130 个模块和 850 个查询 我几乎知道这样做的所有主要
  • 作为字符串的动态属性名称

    使用 DocumentDB 创建新文档时 我想设置属性名称动态地 目前我设置SomeProperty 像这样 await client CreateDocumentAsync dbs db colls x new SomeProperty
  • 已过时 - OpenCV 的错误模式

    我正在使用 OpenCV 1 进行一些图像处理 并且对 cvSetErrMode 函数 它是 CxCore 的一部分 感到困惑 OpenCV 具有三种错误模式 叶 调用错误处理程序后 程序终止 Parent 程序没有终止 但错误处理程序被调
  • Bing 地图运行时错误 Windows 8.1

    当我运行带有 Bing Map 集成的 Windows 8 1 应用程序时 出现以下错误 Windows UI Xaml Markup XamlParseException 类型的异常 发生在 DistanceApp exe 中 但未在用户
  • 窗体最大化时自动缩放子控件

    有没有办法在最大化屏幕或更改分辨率时使 Windows 窗体上的所有内容自动缩放 我发现手动缩放它是正确的 但是当切换分辨率时我每次都必须更改它 this AutoScaleDimensions new System Drawing Siz
  • C++ 成员函数中的“if (!this)”有多糟糕?

    如果我遇到旧代码if this return 在应用程序中 这种风险有多严重 它是一个危险的定时炸弹 需要立即在应用程序范围内进行搜索和销毁工作 还是更像是一种可以悄悄留在原处的代码气味 我不打算writing当然 执行此操作的代码 相反

随机推荐

  • 如何使用 Groovy 的正则表达式获取部分匹配的布尔值?

    Groovy 有一个正则表达式 匹配运算符 The 文档说它返回一个布尔值 但需要 严格匹配 它没有定义 严格匹配 我不熟悉该表达式所在的任何正则表达式系统false 但是 这就是 Groovy 告诉我的 foo bar baz bar g
  • 为什么不捕获一般异常

    我的VS刚刚告诉我 警告 2 CA1031 Microsoft Design 修改 Program Main string 以捕获比 Exception 更具体的异常或重新引发异常 我为什么要那么做 如果我这样做 并且没有捕获所有异常来处理
  • 如何实时回显输出(在脚本完成之前)?

    在脚本执行完毕之前如何输出到浏览器 例如 下面的代码将一次输出所有 100 个 hi 我该如何制作 以便在读取 处理该代码部分后立即输出 例如 PHPBB3论坛显示了逐步安装过程 在循环之前调用 ob implicit flush 请注意
  • 进入振奋精神; Qi还是X3?

    我正在和一个朋友一起为一个小型个人项目做一名口译员 我们开始实现所有类和通用结构 其中代码将被翻译然后执行 只是为了推迟将实际解析代码放入这些结构中 现在我们必须构建解析器 经过一番搜索 我发现到处都有帖子和人们谈论spirit Qi和sp
  • whereArrayContains 限制为 10

    我要过滤问题集合基于tagIDs 一切工作正常但是其中数组包含最多适用于 10 个 id 我怎样才能提高我的结构工作超过10年tagIDs并且确保尽可能少地调用服务器减少金钱支出 Firestore root questions colle
  • 如何使用 Robot 在 IE11 中打开保存对话框弹出窗口

    我正在 IE11 上执行测试 无法使用任何其他浏览器 在执行时 我会弹出下载窗口 并希望将文件下载到 TestResult 文件夹中 我如何使用 Robot 来实现这一目标 我也读过有关 AutoIT 的内容 但不确定 因为我对这些还很陌生
  • AS3 - Flash/AIR 套接字通信 writeUTFBytes 仅有效一次

    我有一个套接字服务器侦听 2 个端口 其中 1 个端口用于套接字服务器 1 个端口用于策略服务器 我的代码如下 在这种情况下 数据发送和接收完全正常 但是 例如 如果我添加一个带有简单按钮的按钮 socket writeUTFBytes M
  • Exoplayer - 保存和恢复片段内旋转的状态

    我有一个托管 SimpleExoplayer 的片段 我想确保我正确处理屏幕旋转 现在 播放器重置到屏幕旋转的起点 我已经在 onStart 和 onResume 中实现了方法 所以我很好奇我需要哪些额外的代码 Override publi
  • 更改 Asp.Net 5 中的组件视图位置

    在 ASP NET 5 上 组件视图必须位于以下两个位置之一 Views NameOfControllerUsingComponent Components ComponentName Default cshtml Views Shared
  • 在 SQL 中计算连续缺勤

    我需要计算 SQL 中在某个日期范围内连续缺勤 X 次的所有员工 我们有一个缺勤表 其中包含员工每天缺勤的 1 条记录 还有一个日历表 其中包含一年中的工作日 tblAbsences EmployeeID int AbsenceDate d
  • excel VBA 不应该发生溢出错误

    Sub TestFunction Dim var As Double var 25 24 23 22 21 20 End Sub 我收到此 vba 操作的溢出错误 当我在具有函数的单元格中运行它时 我得到 127 512 000 这可能是什
  • 如何使用python(maya)多线程

    我一直在看其他人的例子 但我似乎无法让它正常工作 它要么使用单个核心 要么如果处理太多 基本上会冻结 Maya 但我似乎从来没有让多个核心同时工作 例如 这就是我希望它在非常基本的层面上做的事情 主要只是让每个循环在具有不同值的不同处理器上
  • OpenGL 上的多线程渲染

    我有一个多线程应用程序 我试图在其中使用不同的线程进行渲染 首先 我尝试在所有线程之间使用相同的渲染上下文 但我为其他线程获取了 NULL 当前上下文 我在互联网上读到 一个上下文一次只能在一个线程中存在 所以我决定做一些不同的事情 我创建
  • searchlogic 可以与 Rails 3 一起使用吗?

    如果不是 我的替代方案是什么 元空间 http metautonomo us projects metawhere 看起来是一个有前途的替代方案 ps 通过 ruby flow com 发现metawhere 元搜索 http metaut
  • DBI begin_work 不适用于存储过程调用

    我正在尝试以简化形式从事务中调用存储过程 my dbh DBI gt connect my sth dbh gt prepare call sp get workitems 1 1 dbh gt begin work or die dbh
  • Ruby on Rails 变形错误 - 未初始化常量

    我正在使用 Ruby on Rails 为我玩的游戏创建一个网站 我有一个User模型和一个Starbase模型 我试图建立的关系就像这样 class User lt ActiveRecord Base has many starbases
  • Django 2.2 破坏了以前工作的视图/url

    决定使用 Django 2 2 进行测试 项目当前运行的是 2 1 8 现在我什至无法启动服务器 我维护这个项目已经近两年了 这应该是一个小的更新 该错误似乎与我的观点有关 但我在中找不到任何内容发行说明这在 2 1 8 和 2 2 之间发
  • 从 x64 进程将 x86 代码注入到 x86 进程

    我意识到标题有点复杂 所以让我解释一下我想要做什么 我刚刚完成了一个简单的 DLL 注入器的编写 用于验证我正在尝试编写的概念 该程序拍摄当前进程的快照 枚举进程树 并将 DLL 注入其直接父进程 现在 在理想条件下 效果很好 32 位版本
  • 背景图像,线性渐变锯齿状边缘结果需要平滑边缘

    我正在尝试使图像的底部变尖 我试图通过在底部生成两个三角形来获得这种效果 他们必须反应灵敏 在互联网上搜索了很多不适合我的要求的例子之后 这是迄今为止我设法制作的最好的例子 body html height 100 image width
  • C# 中的“常量正确性”

    const 正确性的要点是能够提供用户无法更改或删除的实例的视图 编译器通过指出何时从 const 函数中破坏常量性或尝试使用 const 对象的非 const 函数来支持这一点 那么 在不复制 const 方法的情况下 我是否可以在 C