C# 中的不可变类型和属性

2024-01-19

C# 中的不可变类型和不可变属性是什么意思?你能举个简单的例子吗?


不可变类型是其属性只能在初始化时设置的类型。一旦创建了对象,就无法再更改任何内容。不可变属性只是只读属性。

在下面的示例中,ImmutableType是一种具有一个属性的不可变类型Test。测试是只读属性。它只能在构造时设置。

class ImmutableType
{
    private readonly string _test;
    public string Test
    {
        get { return _test; }
    }

    public ImmutableType(string test)
    {
        _test = test;
    }
}

See also: 维基百科文章 http://en.wikipedia.org/wiki/Immutable_object, and 一些堆栈 https://stackoverflow.com/questions/279507/what-is-meant-by-immutable 溢出问题 https://stackoverflow.com/questions/352471/how-do-i-create-an-immutable-class关于这个话题。

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

C# 中的不可变类型和属性 的相关文章

  • 成员字段、构建顺序

    在 C 中 当执行如下所示的操作时 构造顺序是否得到保证 Logger Logger kFilePath logs runtime log logFile kFilePath 是的 施工顺序始终得到保证 但是 不能保证它与对象在初始值设定项
  • 如何使用最小起订量模拟私有只读 IList 属性

    我试图嘲笑这个列表 private readonly IList
  • 在异步请求中使用超时回调

    我之前问过这个问题 但我将用提出的解决方案来完成这个问题 并提出另一个问题 我正在使用这个类来进行异步网络请求 http msdn microsoft com en us library system net webrequest aspx
  • ASMX Web 服务,测试表单仅在本地计算机上适用于一种 WebMethod

    我有一个正在测试的 ASMX WebService 并且在大多数方法上我都可以使用测试表单进行测试 然而 我确实有一种方法 测试表上写着 The test form is only available for requests from t
  • 如何部署包含第三方 DLL 文件的 C# 应用程序?

    首先 我对部署了解不多 我希望我的问题有意义 我需要将 C 应用程序安装 部署到多个桌面 它需要一个第三方 DLL 文件 一个 C 库 lpsolve55 dll 对于那些感兴趣的人 它是一个免费的 MIP LP 求解器 请参阅 lpsol
  • C语言中没有循环可以打印数组吗?

    例如 在Python中 如果我们将一个列表作为数组 它会直接用一行代码打印整个数组 有什么办法可以用C语言实现同样的事情吗 简短回答 No 对表格上几乎所有问题的简短回答 用 C 语言做 X 工作能像用 Python 一样简单吗 No 长答
  • 打开位置设置页面或提示用户启用位置

    我一直在绞尽脑汁 徒劳地谷歌搜索 我正在尝试找到一种方法来提示用户通过直接进入设置页面或仅点击屏幕上的 是 来切换位置 我见过的所有代码似乎都不起作用 有人有有效的方法吗 一个详细的例子将不胜感激 谢谢 我对 Xamarin 开发非常陌生
  • 多个线程访问一个变量

    我在正在读的一本教科书中发现了这个问题 下面也给出了解决方案 我无法理解最小值怎么可能是 2 为什么一个线程不能读取 0 而所有其他线程都执行并写入 1 而无论是1还是2 最后写入的线程仍然必须完成自己的循环 int n 0 int mai
  • 主构造函数不再在 VS2015 中编译

    直到今天 我可以使用主构造函数 例如 public class Test string text private string mText text 为了能够做到这一点 在以前的 Visual Studio CTP 中 我必须将其添加到 c
  • 重定向 std::cout

    我需要一个类 在其对象的生命周期内将一个 ostream 重定向到另一个 ostream 经过一番修补后 我想出了这个 include
  • C# 反序列化过程中创建指向父对象的指针

    我有这样的课程 Serializable public class child public Parent parent Serializable public class Parent public List
  • 文件加密与解密问题

    我一直在尝试在 VC Express 2010 中加密和解密文件 我见过的所有教程和文档都需要两个FileStreams 来加密文件 一个用于读取未加密的版本 另一个用于加密 当我实际编写代码时 它不断抛出错误 告诉我它无法打开该文件 因为
  • XCode std::thread C++

    对于学校的一个小项目 我需要创建一个简单的客户端 服务器结构 它将在路由器上运行 使用 openWRT 并且我试图在这个应用程序中使用线程做一些事情 我的 C 技能非常有限 所以我在internet https stackoverflow
  • 动态菜单创建IoC

    我想知道是否有人知道我如何创建如何使用 AutoFac 之类的东西来让我动态地允许 dll 创建自己的表单和菜单项以在运行时调用它们 所以如果我有一个 员工 dll 新入门表格 证书表格 供应商 dll 供应商详细信息来自 产品形态 在我的
  • 如何使 WinForms UserControl 填充其容器的大小

    我正在尝试创建一个多布局主屏幕应用程序 我在顶部有一些按钮链接到应用程序的主要部分 例如模型中每个实体的管理窗口 单击这些按钮中的任何一个都会在面板中显示关联的用户控件 面板包含用户控件 而用户控件又包含用户界面 WinForms User
  • 在 lua 中加载 C++ 模块时出现“尝试索引字符串值”错误

    我正在尝试使用 lua 用 C 编写的函数 下面给出的是cpp文件 extern C include lua h include lauxlib h include lualib h static int add 5 lua State L
  • 检查另一种形式的线程是否仍在运行

    我有一个涉及两个窗体的 Windows 窗体应用程序 子表单用于将数据导出到 CSV 文件 并使用后台工作者写入文件 当这种情况发生时 我隐藏了表格 当后台工作程序运行时 父窗体仍然处于活动状态 因此即使后台工作程序正在写入文件 用户也可以
  • 包含从代码隐藏 (ASP.NET C#) 到 ASPX 中的图像概述的图像列表 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • C# 和断点 - 这里有魔术师吗?

    我有这个 public static void ByLinkText string text for var i 0 i lt 50 i try Setup Driver FindElement By LinkText text Click
  • 在两个点之间创建一条曲线,每个点都具有标准化向量

    因此 我需要一种写入方法来在两点之间创建一条曲线 每个点都有一个指向任意方向的归一化向量 我一直在尝试设计这样一种方法 但一直无法理解数学 在这里 由于一张图片胜过一千个文字 这就是我所需要的 在图中 矢量垂直于红线 我相信向量需要进行相同

随机推荐

  • 使用通配符进行模式匹配

    如何使用通配符识别字符串 我找到了glob2rx 但我不太明白如何使用它 我尝试使用以下代码来选择数据框中以单词开头的行blue make data frame a lt data frame x c red blue1 blue2 red
  • 在逗号分隔的项目进度列表上运行循环 4GL

    def var cList as char no undo assign cList one two three four
  • 多线程代码中是否需要有原子标志?

    我想知道在多线程代码中是否真的有必要使用原子标志 对于这个问题 我重点关注多线程代码中的一个常见情况 通过设置标志来停止线程 我们假设以下伪代码 is running 1 create threads stopper thread runn
  • boost 正则表达式子字符串匹配

    如果模式 regular 是变量 st 的子字符串 我想返回输出 match 这可能吗 int main string st some regular expressions are Regxyzr boost regex ex Rr eg
  • Java 8 流 - 如何将地图中的地图中的所有对象提取到新地图中?

    我有一张地图 siteId gt AppName gt App 我想迭代内部地图中的所有应用程序并创建一个新地图 appId gt App 我在没有流的情况下做到了 Map
  • ASP 会员奇怪问题

    我在 ASP NET 中使用 Membership API 并且在临时服务器上遇到了以下问题 该应用程序在我的本地计算机上运行良好 数据表存储在 SQL Server 上 我的本地服务器和临时服务器都指向同一个数据库服务器 当我部署到临时服
  • 使用 boto3 验证 S3 凭证,无需 GET 或 PUT

    有没有一种方法可以验证给定的一组 S3 凭据是否可以访问特定存储桶 而无需执行某种显式的 PUT 或 GET 实例化 s3 Client s3 Resource 或 s3 Bucket 对象似乎根本不验证凭据 更不用说存储桶访问了 博托3
  • Lua string.gsub() 按 '%s' 或 '\n' 模式

    英语不是我的母语 所以描述这个问题有点困难 我想通过 lua string gsub 在 str 中获取 d 40 但是有一些问题 代码如下 本地字符串 a 10 b 20 c 30 d 40 本地 pat1 s s 本地 pat2 n s
  • 从 html 按钮调用 vbscript 函数

    如果我所做的完全错误或者解决方案是显而易见的 请不要感到惊讶
  • 从 x86 汇编语言调用 C 函数

    是否可以使用 GCC 从 C 函数生成汇编语言函数 以便可以从汇编语言程序中调用它们 我知道 gcc 将 C 编译为机器代码 可以很容易地反汇编为汇编语言 并且我已经知道可以C 中的内联汇编语言函数 https stackoverflow
  • 解析来自 BaseHTTPServer 的 Python HTML POST 数据

    我正在将几个文件从 HTML 表单发送到基于 BaseHTTPServer 的服务器 在我的 do POST 中 我从 rfile read length 获取一个字符串 它看起来像某种多部分 MIME 字符串 谷歌并没有帮助我将其解码为可
  • 用于与父节点通信的react.js自定义事件

    我正在制作并监听普通 DOMCustomEvents 与父节点通信 儿童时期 var moveEvent new CustomEvent the graph group move detail nodes this props nodes
  • Keras inception v3 重新训练和微调错误

    我试图从这里开始这个例子 https keras io applications https keras io applications 工作了几个小时 我有点发疯了 因为它不起作用 如果有人知道我可以尝试什么 我将非常感激 这是我的示例代
  • 尝试使用 ServerManager 获取应用程序池时出现 COMException

    当我尝试使用以下代码从远程服务器获取 IIS 应用程序池列表时 List
  • 我应该在 graphql 模式文件中将每个对象作为“输入”和“类型”写入两次吗

    我必须在 GraphQL 中使用 Java 对象来响应和请求 我是否必须在 GraphQL 架构文件中将每个对象作为 输入 和 类型 写入两次 用于在请求和响应中获取该对象 我应该使用输入和类型定义同一个对象两次吗 file test gr
  • VS2010 - 文件新菜单缺少“新项目”

    一位同事刚刚从 MSDN 安装了 Visual Studio 2010 Premium 安装运行得很好 但是当他单击 文件 菜单时 他只有 新文件 在我的安装中 我看到一个 新建 菜单 其中包含一个子菜单 其中包含项目 文件 团队项目 关于
  • 在非模式对话框中阻止 ESC 和 Enter 键(Win32、非 MFC)

    有一些关于这个主题的文章 但没有一篇适合我的情况 我正在使用 Win32 无 MFC 编写以下内容 目标是防止ESC or ENTER键关闭非模式对话框 这是对话框模板 IDD DIALOG 1 DIALOGEX 0 0 345 179 S
  • Web应用Nat穿越

    我们正在全国各地的客户端计算机上使用 Tomcat 部署 Java Web 应用程序 一旦安装完毕 我们希望允许通过中央服务器远程访问这些 Web 应用程序 但我们不希望我们的客户端必须在其路由器上打开端口 有没有办法通过隧道传输 http
  • 如何使用gradle在Android Studio中导入远程库?

    我正在尝试导入 android swipelistview https github com 47deg android swipelistview https github com 47deg android swipelistview
  • C# 中的不可变类型和属性

    C 中的不可变类型和不可变属性是什么意思 你能举个简单的例子吗 不可变类型是其属性只能在初始化时设置的类型 一旦创建了对象 就无法再更改任何内容 不可变属性只是只读属性 在下面的示例中 ImmutableType是一种具有一个属性的不可变类