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# 中的“常量正确性” 的相关文章

  • 是否有一个好的习惯用法来处理替代输出流?

    我想编写一个简单的程序 根据传递给它的选项 可执行文件将输出打印到屏幕或文件 程序很简单 include
  • C++:如何检测向量中的重复项并打印一份副本?

    我是 C 新手 我想知道如何在向量中找到重复的字符串并打印出该字符串的一个副本 例如 如果我有它会打印出cat dog bird 我已经对我的向量进行了排序 并使用adjacent find函数并迭代该向量 因为我必须查找是否有任何单词重复
  • 简单的C问题

    作为我正在进行的项目的一部分 我必须开始学习 C 我已经开始解决其中的 欧拉 问题 并且遇到了麻烦 我必须找到 1000 以下的所有 3 或 5 的倍数之和 有人可以帮助我吗 谢谢 include
  • ASP.NET 会员电子邮件验证

    尝试基于 C 创建电子邮件验证本文 https web archive org web 20211020153319 https www 4guysfromrolla com articles 062508 1 aspx 我创建了一个 ja
  • 为什么在 OpenCV 中访问该矩阵时出现内存错误?

    我只是想写入给定大小的矩阵 当我在 Valgrind 中运行该程序时 出现内存错误 如下所示 主要 cpp include
  • 不能使用函数名称距离

    以下代码可以正常编译 include
  • 如何在Qt中更快地读取数据?

    Qt读取数据库比C 慢吗 我想我错过了一些东西 为了比较阅读速度 我在 Qt 中编写了以下内容 QElapsedTimer t t start int count 0 QString cs Driver SQL Server Server
  • 如何自定义 ASP.Net Core 模型绑定错误?

    我只想从我的 Web API Asp net Core 2 1 返回标准化的错误响应 但我似乎不知道如何处理模型绑定错误 该项目刚刚从 ASP NET Core Web 应用程序 gt API 模板创建 我有一个简单的操作定义为 Route
  • 我可以将特定警告视为错误吗?

    以下是我有时在学生代码中看到的模式的简化版本 bool foobar int a int b if a lt b return true 当然 真正的代码要复杂得多 Visual Studio 报告警告 C4715 并非所有控制路径都会返回
  • 是否可以获取指向装箱非托管值类型的指针?

    是否可以获取指向装箱非托管值类型的指针 而无需编写对每个支持的类型进行强制转换的大型 switch 语句 就像是 object val Contains a boxed unmanaged value such as int long by
  • 二维数组的列求和

    我有一个IEnumerable
  • 使用 C# 和 .NET Core 在 AWS Cognito 用户池中进行用户管理

    如何使用 C 和 NET Core 3 x 管理 AWS Cognito 用户池中的用户 在文档中找不到有关它的任何内容 Attilio Gelosa 的原创文章 我写这篇文章是希望对其他人有帮助 我必须阅读一页又一页的文档 并从 AWS
  • 为什么我从 c# 到 js 得到不同的 MD5 哈希值?

    我有一个用于加密密码的 C 函数 System Security Cryptography MD5CryptoServiceProvider md5Provider new System Security Cryptography MD5C
  • 验证域用户凭据

    我需要一种方法来验证 Windows 上本机 C 的用户 密码对 输入的是用户名和密码 用户可以是 DOMAIN user 格式 基本上我需要编写一个函数 如果用户 密码是有效的本地帐户 则返回 true 第1部分 如果用户 密码在给定的域
  • 不兼容的指针到字符转换

    我正在编写一个程序 将卡片值写入 52 个点字符的多维数组中 该程序是一个测试数组 稍后我将其作为函数写入主程序中 在程序中 我通过以下方式初始化 for 循环计数0通过51 我用一个switch语句调制13将卡牌值分配给数组点 但是 我收
  • 您的 C++ 程序中是否仍然存在内存分配失败问题 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我正在为公司写一些指导方针 我需要回答一些棘手的问题 这一项是相当困难的 解决方案可以是 根本不跟踪 确保使用 new 分配对象 这会在分配失败
  • C++ 项目编译为静态库,编译为动态库失败(链接器错误)。为什么?

    我有一个 VS2008 本机 C 项目 我希望将其编译为 DLL 它仅引用一个外部库 log4cplus lib 并使用其功能 当然也使用 log4cplus 的 h 文件 当我尝试将我的项目编译为静态库时 它成功了 当我尝试作为 DLL
  • 使texture2D在运行时/脚本Unity3D中可读[重复]

    这个问题在这里已经有答案了 我有一个插件 可以让我访问 Android 手机图库中的图片 这给了我一个Texture2D类型的纹理 然后我想使用 GetPixels 函数对其进行编辑 但默认情况下它未设置为可读 如何使纹理可读 以便我可以在
  • 应用非限定名称查找而不是依赖于参数的名称查找

    考虑标准 sec 3 4 1 3 中的一个示例 typedef int f namespace N struct A friend void f A operator int void g A a int i f a f is the ty
  • File.Move 的原子性

    我想将目录中的文件重命名为原子事务 该文件不会更改目录 该路径作为 NTFS 文件系统的 UNC 路径提供 可能位于服务器 03 或 08 上 File Move 对于这些目的来说是原子的吗 例如 它要么成功完成 要么失败 以使原始文件仍然

随机推荐

  • 如何使用 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