C# 使用解构元组方式不用第三个变量交换值

2023-11-13

C# 使用解构元组方式不用第三个变量交换值
C#7.0 新增了泛型ValueTuple 值元组类型。
支持对元组的解构,通过解构可以将元组的字段依次赋值给每个变量。
因此我们可以通过这种方式来实现不用第三个变量,交换两个变量的值,如下:

string a = "apple";
string z = "zebra";
Console.WriteLine($"a={a},z={z};");  // 交换之前: a=apple,z=zebra;
(a, z) = (z,a);
Console.WriteLine($"a={a},z={z};");  // 交换之后: a=zebra,z=apple;

"(a, z) = (z,a);"的原理是,首先在 = 右边创建了一个ValueTuple,一对圆括号是简化语法,相当于 new ValueTuple<string,string>(z,a);
然后在将此值元组解构,将元组的每一个字段依照顺序赋值给左边的变量,因此正好实现了变量的交换。
详细参考:
https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/builtin-types/value-tuples#main
 

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

C# 使用解构元组方式不用第三个变量交换值 的相关文章

  • 多个源的 makefile

    在学习 make 文件时 我试图为多个源目录编写一个 make 文件 似乎我在某个地方错了 这是我的代码结构 directory common fun2 c inc fun h src fun1 c main c 这是我的生成文件 CC c
  • 添加 Nullable int 时保持 null?

    我想添加可为空的int 并保留null当所有值都是null 我想要这个结果 1 2 3 1 null 1 null null null O null 0 问题是 如果我将一个值与 null 相加 结果为 null int i1 1 int
  • 您可以从基本 Win32 控制台模板应用程序中的 C#/Winrt 组件调用(不是 WinForm/abstractions/wrappers 或使用 C++/Winrt 模板)吗?)

    我有一个现有的程序 win32 x86 控制台应用程序 需要调用托管代码 来自 Net 的 C dll The dll不暴露给 COM 但可以从 C WinRT 组件调用并由 C WinRT 控制台模板应用引用 BUT即使安装了 C Win
  • 单元测试验证失败

    我正在运行我的单元测试PostMyModel路线 然而 在PostMyModel 我用的是线Validate
  • 在 OnModelCreating 期间设置列名称

    Issue 我目前正在尝试通过设置的属性为我的表及其列添加前缀 我正在使用实体框架核心 我已经正确地为表名添加了前缀 但我似乎无法弄清楚列的前缀 我有一种感觉 我需要使用反射 我已经留下了我的 可能很糟糕的 反思尝试 有人有办法在实体中设置
  • 检测wlan是否关闭

    任何人都可以给我一个提示 如何在 Windows Phone 上以编程方式检测 C 8 1 应用程序 不是 8 0 是否启用 禁用 WLAN 我不想更改这些设置 只是需要知道 该解决方案是一个 Windows 8 1 通用应用程序 Wind
  • linq 中使用字符串数组 c# 的 'orderby'

    假设我有一个这样的方法定义 public CustomerOrderData GetCustomerOrderData string CustomerIDs var query from a in db Customer join b in
  • std::call_once 可重入且线程安全吗?

    std call once http en cppreference com w cpp thread call once是线程安全的 但它也是可重入的吗 我使用 VS2012 调试和发布 进行的测试表明 调用std call once从单
  • 从模板切换传递的类型

    在 C 中是否可以检查传递给模板函数的类型 例如 template
  • 检测到堆栈崩溃

    我正在执行我的 a out 文件 执行后 程序运行一段时间 然后退出并显示消息 stack smashing detected a out terminated Backtrace lib tls i686 cmov libc so 6 f
  • 计算另一个表达式中的 C# 表达式

    我想在另一个表达式中使用一个表达式 Expression
  • 将表(行)与 OpenXML SDK 2.5 保持在一起

    我想在 Word 文档中生成多个表 每行 2 行 但我想将这两行保留在一起 如果可能的话 new KeepNext 第一行不起作用 new KeepNext 第一行的最后一段不起作用 new CantSplit 放在桌子上不起作用 在所有情
  • 增强精神、递归和堆栈溢出

    为什么下面的代码在运行时崩溃 它会给出堆栈溢出错误 include
  • 将接口转换为其具体实现对象,反之亦然?

    在 C 中 当我有一个接口和几个具体实现时 我可以将接口强制转换为具体类型 还是将具体类型强制转换为接口 这种情况下的规则是什么 Java 和 C 中都允许这两个方向 向下转型需要显式转型 如果对象类型不正确 可能会抛出异常 然而 向上转换
  • 根据对象变量搜索对象列表

    我有一个对象列表 这些对象具有三个变量 ID 名称和值 这个列表中可能有很多对象 我需要根据ID或Name找到一个对象 并更改值 例子 class objec public string Name public int UID public
  • 引用/指针失效到底是什么?

    我找不到任何定义指针 引用无效在标准中 我问这个问题是因为我刚刚发现 C 11 禁止字符串的写时复制 COW 据我了解 如果应用了 COW 那么p仍然是一个有效的指针并且r以下命令后的有效参考 std string s abc std st
  • ASP.NET MVC 路由:如何从 URL 中省略“索引”

    我有一个名为 StuffController 的控制器 具有无参数索引操作 我希望从表单中的 URL 调用此操作mysite com stuff 我的控制器定义为 public class StuffController BaseContr
  • 逆向工程 ASP.NET Web 应用程序

    我有一个 ASP NET Web 应用程序 我没有源代码 该 bin 包含 10 个程序集和一个 compiled 文件 我在 App Code dll 上使用 Reflector 它向我显示了类和命名空间之类的东西 但它太混乱了 有没有什
  • 如何在 winforms 应用程序的主屏幕显示之前显示欢迎屏幕?

    我想在应用程序启动时加载欢迎屏幕 然后用户单击欢迎屏幕上的按钮 然后关闭欢迎屏幕 最后显示主屏幕 static void Main startup method being called Application EnableVisualSt
  • 如何得知客户端从服务器的下载速度?

    根据客户的下载速度 我想以低质量或高质量显示视频 任何 Javascript 或 C 解决方案都是可以接受的 Thanks 没有任何办法可以确定 您只能测量向客户端发送数据的速度 如果没有来自客户端的任何类型的输入来表明其获取信息的速度 您

随机推荐

  • 在python的opencv使用yolov3

    基本步骤 文件路径和基本参数设置 文件 类别名文件 如data coco names 配置文件 如cfg yolov3 cfg 和权重文件 如yolov3 weights 基本参数设置 非极大抑制阈值 图片高宽 读入模型 readNetFr
  • android网络权限需要动态申请么,Android 6.0之后的动态权限

    前言 在Android 6 0之前 开发Android应用程序的时 开发者需要使用什么权限只需要在AndroidManifest xml文件中显示的声明即可 如下 但是 在Android 6 0之后 Android对应用程序的权限进行了进一
  • 使用sourceTree连接gitlab仓库

    总体步骤 安装git工具 生成ssh秘钥 配置gitlab秘钥 配置sourceTree 1 安装git省略 Git 详细安装教程 详解 Git 安装过程的每一个步骤 git安装 mukes的博客 CSDN博客 2 git生成ssh秘钥 h
  • flutter 图表插件之fl_chart

    前言 之前很少接触图表功能 以为图表这种功能只能在H5上才能发挥得淋漓尽致 可谁曾料想 早有大神先把强大的chart图表功能给移植到flutter端上了 而且两端都可适用 下面给出网址 pub上 https pub dev packages
  • VirtualKD + VMWare实现单机内核调试

    VirtualKD VMWare实现单机内核调试 By 张佩 若干年以前 我的前同事酒若v霖 JIURL 写的 借助VMware实现单机使用WinDbg 一文 帮助了很多人 至今流传甚广 它介绍了如何借助于VMWare虚拟机 在同一台电脑上
  • matlab数字图像处理-消除条纹干扰

    一 背景 下图含有干扰条纹 并且低灰度区域的细节难以分辨 对图像进行灰度变换 再分别应用空域和频域的处理方法消除条纹干扰 并比较这两类方法去除条纹干扰的效果 二 算法原理 因为低灰度区的细节难以分辨 所以先将图像整体均衡化 见图1 2 使整
  • 【STM32标准库】【自制库】0.96寸OLED显示屏(SSD1306)(1)满屏图像显示

    文章目录 链接 需求分析 取模 1 处理图片 2 打开软件 3 设置图形模式 4 打开BMP图像 3 设置参数 4 生成 显示图片 成品 文章基于适用于STM32F4系列 作者使用STM32F401CCU6开发板 本文章基于此系列和开发板展
  • python+pytest单元测试框架之生成各种格式测试报告

    前面讲到使用pytest执行单个 多个或指定的测试用例 接下来讲解下通过运行测试用例 怎么来生成不同格式的测试报告 首先 创建test calss py 测试用例文件 这里以测试该文件为例 coding utf 8 class TestCl
  • Mybatis(一) 主配置文件

    SqlMapConfig xml是mybatis的全局配置文件 配置文件示例
  • 机器视觉(十一):一维条码识别

    目录 机器视觉 一 概述 机器视觉 二 机器视觉硬件技术 机器视觉 三 摄像机标定技术 机器视觉 四 空域图像增强 机器视觉 五 机器视觉与世界杯 机器视觉 六 频域图像增强 机器视觉 七 图像分割 机器视觉 八 图像特征提取 机器视觉 九
  • 呼叫系统及智能语音交互平台简介及与ChatGPT融合的展望

    chatgpt是目前最火热的赛道 随着人工智能的日益发展 如何构建智能语音系统并融合chatGPT的能力成为一个全新挑战 智能语音交互平台是在呼叫中心基础上 集成 ASR TTS的呼叫服务平台 那么如何我们自己去搭建智能语音系统呢 我们先列
  • LongLLaMA:LLaMA的升级版,处理超长上下文的利器!

    原文来源 芝士AI吃鱼 有效整合新知识 大模型面临的挑战 大家使用过大型模型产品的时候可能会遇到一个共同的问题 在进行多轮对话时 模型可能会忘记之前的对话内容 导致回答不连贯 这实际上是由于大型模型在处理大量新内容时有时会力不从心 给人一种
  • 10 网络丢包模拟工具_抓包工具charles弱网场景模拟

    charles 使用场景 在app和pc的测试过程中 case中总会有关于弱网的异常场景 弱网场景可能会出现请求超时报错等问题 那么charles是一个非常实用的工具 解决了弱网的模拟需求 下面讲解一下具体使用方法 1 点击下方图片的选项
  • 图像分割套件PaddleSeg全面解析(七)评估代码解读

    当保存完模型后 我们可以通过PaddleSeg提供的脚本对模型进行评估 python val py config configs quick start bisenet optic disc 512x512 1k yml model pat
  • centos 安装trace_Centos7--traceroute

    通过traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径 当然每次数据包由某一同样的出发点 source 到达某一同样的目的地 destination 走的路径可能会不一样 但基本上来说大部分时候所走的路由是相
  • PAT乙级1087 有多少不同的值 (20 分)

    1087 有多少不同的值 20 分 问题描述 当自然数 n 依次取 1 2 3 N 时 算式 n 2 n 3 n 5 有多少个不同的值 注 x 为取整函数 表示不超过 x 的最大自然数 即 x 的整数部分 输入格式 输入给出一个正整数 N
  • HTTP-Tinyhttpd解析

    大家好 我是阿桃 一个想成为被点赞关注的程序员 工控行业 物联网行业 机器人行业软件开发可联系我 Tinyhttpd是一个微型的web服务器 浏览器与Web服务器之间的通信采用的是Http 所以一开始的切入点是HTTP协议 这里说一点如果有
  • 平滑处理

    平滑处理 smoothing 也称模糊处理 bluring 作用就是减少图像上的噪声或者失真 图像滤波 即在尽量保留图像细节特征的条件下对目标图像的噪声进行抑制 是图像预处理中不可缺少的操作 其处理效果的好坏将直接影响到后续图像处理和分析的
  • Metasploit(一)

    Metasploit木马 MSF模块介绍 auxiliary exploits payloads encoders nops post 木马管理 开启监听 连接多个木马 木马持久化 木马进程迁移 生成木马 生成木马 木马捆绑 木马混淆 劫持
  • C# 使用解构元组方式不用第三个变量交换值

    C 使用解构元组方式不用第三个变量交换值 C 7 0 新增了泛型ValueTuple 值元组类型 支持对元组的解构 通过解构可以将元组的字段依次赋值给每个变量 因此我们可以通过这种方式来实现不用第三个变量 交换两个变量的值 如下 strin