为什么 Tuple 或 KeyValueItem 没有 setter?

2023-11-27

我需要一个包含一对值的结构,其中的值将被更改。所以我的第一个想法是使用 KeyValueItem 或 Tuple 但后来我发现它们只有一个吸气剂。我不明白为什么?在我的情况下你会用什么?我可以创建自己的类,但是还有其他方法吗?


它们是不可变的类型。不可变类型的想法是它们代表一个值,因此不能改变。如果你需要一种新的价值,你就创造一个新的价值。

假设您的元组的第一个值需要更改,只需执行以下操作:

myValue = Tuple.Create(newValue, myValue.Item2);

要理解为什么不变性很重要,请考虑一个简单的情况。我有一堂课说包含最低和最高温度。我可以将其存储为两个值并提供两个属性来访问它们。或者我可以将它们存储为元组并提供提供该元组的单个属性。如果元组是可变的,其他代码可以更改这些最小值和最大值,这意味着我的类中的最小值和最大值将发生变化。通过使元组不可变,我可以安全地一次传递两个值,并确保其他代码无法篡改它们。

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

为什么 Tuple 或 KeyValueItem 没有 setter? 的相关文章

  • Postsharp 不登录跟踪级别

    我喜欢在跟踪级别记录一些 Postsharp 消息 不幸的是 日志到这个级别没有打印任何输出 所有其他级别都在工作 与控制台或 NLog 后端或从其他类登录时的行为相同 如何启用跟踪级别 应用程序 xaml cs Log Attribute
  • 如何在 Caliburn.Micro 中使用 Conductor 的依赖注入

    我有时用Caliburn Micro http caliburnmicro com创建应用程序 使用最简单的 BootStrapper 我可以像这样使用 IoC 容器 SimpleContainer private SimpleContai
  • 是否保证 sizeof(T[N]) == N * sizeof(T) ?

    我一直假设 N 个元素类型的数组的大小T 由返回sizeof保证正好是N次sizeof T The 对这个问题的评论 https stackoverflow com questions 46457449 is it always the c
  • 如何转发声明要在 unique_ptr 的标准容器中使用的类

    在智能指针的标准容器中使用它时 是否可以避免完整的类定义可见 例如 我无法编译以下内容 include
  • C语言实现延时函数

    我想使用空循环实现延迟函数 但是完成一次循环所需的时间取决于编译器和机器 我希望我的程序自行确定时间并将程序延迟指定的时间 谁能给我任何想法如何做到这一点 注意 有一个名为delay 的函数可以将系统暂停指定的毫秒 是否可以在不使用此功能的
  • 提取单花括号内的值

    我想要一个收藏 value 一个字符串使用正则表达式 例如 lorem ipsum field1 lorem ipsum field2 lorem ipsum field1 lorem ipsum field2 field3 我会得到 fi
  • UI 线程正在阻塞调用 COM 对象的后台线程

    我正在开发一个通过第三方 COM 库与外部设备通信的应用程序 我试图让与设备的所有通信都通过后台线程 以防止通信问题搞砸我的应用程序 并消除在 UI 线程中进行通信所引入的一些其他复杂性 问题是 每当发生导致主 UI 线程阻塞的情况 即调用
  • 有没有办法找到dll公开的所有函数

    我一直在寻找一种方法来获取映射到 dll 中函数名称的所有字符串 我的意思是您可以调用 GetProcAddress 的所有字符串 如果你对 dll 进行十六进制转储 符号 字符串 就在那里 但我认为必须有一个系统调用来获取这些名称 如果您
  • 为什么我收到编译错误“使用已删除的函数 'std::unique_ptr ...”

    我收到一条巨大的编译错误消息 c mingw include c 6 1 0 bits predefined ops h 123 18 error use of deleted function std unique ptr lt Tp D
  • 使用 FromBase64Transform 解码 base64 文件流

    The example https msdn microsoft com en us library system security cryptography frombase64transform 28v vs 110 29 aspx从M
  • 如何解析多态 JSON 数组?

    我有一个 JSON 格式的文件 其中包含个人用户的记录 一些用户的记录中间有一个评论字段 我只想解析顶级项目 全名 贡献者姓名 电子邮件 使用 Newtonsoft JSON 解析器 但我似乎无法让它识别单个对象 当我将整个字符串解析为一个
  • 将旧的 Unity 代码升级到 Unity 5

    在触发按钮上播放动画的代码似乎不起作用 我在 Youtube 上看到了一个视频 内容很简单animation Play 它可以在该视频上运行 但我无法让它在我的计算机上运行 我做错了什么还是团结改变了它 请帮助我在网上找不到解决方案 所有
  • 快速将文本附加到文本框

    我有一个BackgroundWorker正在发布消息的线程 使用BeginInvoke在 GUI 中的文本框中 方法 write debug text 在文本框中显示文本使用AppendText并将文本写入Console 外观上是这样的Ba
  • 如何解决 boost::multi precision::cpp_dec_float 除法错误

    除以boost multiprecision cpp dec float有某种舍入误差 如下 include
  • 为什么我无法通过 lambda 捕获“this”指针?

    考虑以下代码 class A public void foo auto functor this A a this auto functor a The compiler won t accept this instead of a a g
  • C++ 在预处理器 #if 中对 sizeof() 比较抛出编译错误

    我有这个 它不会从 Visual Studio 编译错误 致命错误 C1017 无效的整数常量表达式 我该怎么做 template
  • 调用泛型类的方法

    这是上下文 我尝试编写一个映射器来动态地将域模型对象转换为 ViewModel 对象 我遇到的问题是 当我尝试通过反射调用泛型类的方法时 出现此错误 System InvalidOperationException 无法对 Contains
  • Selenium - 模式对话框存在 - 如何接受信息?

    我有以下问题 在页面上提交一些日期后 我有一个如图所示的模式对话框 我想单击 ENTER 来浏览该模式 但它不起作用 我有以下代码 driver FindElement By CssSelector input submit Click A
  • 推断“x => { throw .. }”的 Lambda 与重载方法中的 Func 匹配吗?

    我不明白为什么 C 最终在以下 LINQPad 代码中执行不正确的扩展方法 void Main Actual Sync Action Expected Sync Action Run x gt x Dump Actual Async Tas
  • 从 C/C++ 程序进行 Ping

    我想编写一个 C 或 C 程序 给定一个 IP 地址 对其进行 Ping 然后根据 Ping 是否成功执行进一步的操作 这个怎么做 尽情享受Ping 页面 http www ping127001 com pingpage htm 其中有一个

随机推荐

  • 在 D3.js 中使用序数比例创建标记为 x 轴的文本

    我正在 d3 js 中构建一个带有序数 x 轴的条形图 其刻度应使用文本标记图表 谁能解释序数刻度如何 映射 x 到相应的条形位置 具体来说 如果我想将带有文本值数组的 x 刻度标签指定为条形图中相应的条形 目前我将域设置如下 var la
  • 查找直方图最大值对应的 x 值

    我记录下来是为了证实 S O 的想法 感谢迈克尔 0x2a 我一直在尝试找到与绘制的直方图最大值相关的 x 值matplotlib pyplot 起初 我什至无法找到如何仅使用代码访问直方图的数据 import matplotlib pyp
  • 检查文件是否已经打开

    我正在编写一个文件读取库 需要检查文件是否已打开 以便我可以跳过打开语句并直接进行读取 在 Fortran 中如何实现这一点 当人们想了解与外部文件的连接时 可以使用inquire陈述 有两种形式 按卷查询 按单位查询 tom s answ
  • 如何从Windows服务运行exe并在exe进程退出时停止服务?

    我是使用 Windows 服务的完全初学者 我已经为该服务制定了基本框架 目前正在这样做 protected override void OnStart string args base OnStart args Process Start
  • 切换到任何 CPU 配置后,Win 服务项目将无法构建

    我正在尝试找到解决我的问题的方法 将我的 net 4 0 C Win Service 项目更改为 Any CPU Release 构建配置后 我收到以下编译时错误 Cannot specify main if building a modu
  • 动态模块未定义init函数(PyInit_fuzzy)

    我正在使用Python3 4 我正在尝试安装模糊模块 https pypi python org pypi Fuzzy 由于提到它仅适用于 Python2 因此我尝试使用 cython 对其进行转换 这些是我遵循的步骤 cython 模糊
  • 在 C++ 中使用私有函数覆盖公共虚函数

    是否有任何理由使重写的 C 虚函数的权限与基类不同 这样做有危险吗 例如 class base public virtual int foo double 0 class child public base private virtual
  • Chrome扩展中的登录与认证实践

    我正在开发一个 chrome 扩展并尝试实现一种身份验证方法 firebase 我对什么必须去哪里感到困惑 因为 popup html 不允许内联脚本 这使得它变得更加困难 据我所知 有两种选择 从扩展调用外部页面 由我托管 在新选项卡中打
  • 在使用动态的 TryParse 的 if 语句中“使用未分配的局部变量”

    我刚刚在 VS2015 Net v4 5 2 控制台应用程序中输入了以下代码 dynamic fromString blah toString blah2 DateTime fromDate toDate if DateTime TryPa
  • Heroku + Rails 4.2:Cloudfront 设置

    我正在尝试为我的heroku 应用程序设置Cloudfront 文档似乎缺乏独立的立场 以下是我遵循的步骤 1 Setup Cloudfront in AWS console 2 Added cloudfront domain name t
  • Mac 应用程序和 iOS 应用程序之间的蓝牙/WiFi [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 如何制作一个与 iOS 应用程序连接并发送消息的蓝牙 Mac 应用程序 或者通过本地 WiFi 网络与 Mac 应用程序连接的 iOS 应用程序 注意 随着 CoreBlueto
  • BULK INSERT 内部如何工作?

    有人可以解释一下 BULK INSERT 内部是如何工作的以及为什么它比正常的 INSERT 操作快得多吗 问候 希希尔 BULK INSERT 与 SQL Server 的数据库引擎一起在进程内运行 从而避免通过客户端 API 的网络层传
  • Ember.js:控制器之间的数据绑定

    我正在尝试将 ApplicationController 绑定到 IndexController 这是我的jsfiddle 总而言之 这是我在应用程序控制器中的绑定 indexIsClickedBinding App indexContro
  • 如何引用 Visual Studio 项目中用户定义段的开头?

    我正在努力转换与 gnu 工具链的 ld 链接的 C 程序 使其编译为 Visual studio 2005 项目 该程序将 data symbol 放在不同的段中并在 初始化阶段它在段之间复制数据 指向的指针 段的开始和结束在 ld 链接
  • 协议术语:消息与数据包

    在实践中 对于采用更高级别协议 例如 TCP IP 之上的协议 通过网络传输的通信最合适的术语是什么 具体来说 我指的是小的二进制数据单元 我在各种客户端 服务器库中都看到过 消息 和 数据包 但我对社区的共识感兴趣 这些绝对是消息 数据包
  • Pyinstaller 和 Pycrypto

    我们最近将 pycrypto 添加到我们一直在开发的项目中 现在我无法在使用 pyinstaller 构建该软件后运行该软件 我在 pyinstaller 中遇到了新软件包的问题 但我无法特别修复这个问题 我在尝试运行构建的软件时遇到的错误
  • 我收到错误:未定义的类“必需”。当尝试使用必需的关键字时

    我收到错误 未定义的类 必需 当尝试使用必需的关键字时 这是代码示例 class Field final int id final String name final bool userEditable final String title
  • 在清单中具有共享用户证书功能的 Windows Phone 8.1 应用程序中出现部署错误

    如果我检查 Windows Phone 8 1 应用程序清单中的 共享使用的证书 功能 我会收到以下错误 错误 DEP0001 意外错误 无法注册包 HRESULT 异常 0x80073CF6 Manifest
  • 如何使用android API从android中获取wifi网络的名称?

    我认为我应该使用 NetworkInterface getDisplayName 我有一些名称 但这个名称与我在选择要连接的网络时看到的名称不同 android net wifi WifiInfo getSSID WifiManager w
  • 为什么 Tuple 或 KeyValueItem 没有 setter?

    我需要一个包含一对值的结构 其中的值将被更改 所以我的第一个想法是使用 KeyValueItem 或 Tuple 但后来我发现它们只有一个吸气剂 我不明白为什么 在我的情况下你会用什么 我可以创建自己的类 但是还有其他方法吗 它们是不可变的