C# 元组、匿名对象、ref&out
元组
private (int number,int newNumber) CaculateByTuple(int number)
{
return (number: number,
newNumber: number * number);
}
private List<(int number, int newNumber)> CaculateByTuple(List<int> numbers)
{
return numbers.AsEnumerable().Select(
x =>
{
return (number: x,
newNumber: x * x);
})
.ToList();
}
匿名对象
private dynamic CaculateByDynamic(int number)
{
return new
{
number = number,
newNumber = number * number
};
}
参考资料
C# 匿名类型:https://www.w3cschool.cn/csharp/csharp-anonymous-types.html
ref&out
ref
private int CaculateByRef(ref int number)
{
//对于ref
//在进入方法CaculateByRef之前,number必须赋值
//在方法CaculateByRef里面,number可以不进行修改
number = 2;
return number * number;
}
out
private int CaculateByOut(out int number)
{
//对于ref
//在进入方法CaculateByOut之前,number不必赋值
//在方法CaculateByOut里面,number必须进行赋值
number = 3;
return number * number;
}
ref&out的坏处在于:
查询number值的引用时,只能查询到ref&out这个方法名上面,对于IDE来说,方法修改了一个变量值,而不是修改了number
在开发过程中的查询检索会遇到困难,如下所示:


测试方法
public void Test()
{
//ref
int number = 1;
int newNumber=CaculateByRef(ref number);
//out
newNumber = CaculateByOut(out number);
//元组
var returnValues = CaculateByTuple(number);
number = returnValues.number;
newNumber = returnValues.newNumber;
//匿名对象
var returnValues2 = CaculateByDynamic(number);
number = returnValues2.number;
newNumber = returnValues2.newNumber;
//元组2
List<int> numbers = new List<int>();
numbers.Add(1);
numbers.Add(2);
numbers.Add(3);
var returnValues3 = CaculateByTuple(numbers);
}
示例
https://github.com/zLulus/NotePractice/blob/dev3/Console/ConsoleDemo/ReturnsMultipleValuesTest.cs
C# 元组、匿名对象、ref&out的更多相关文章
- C# Lambda表达式和linq表达式 之 匿名对象查询接收
很多小伙伴都用过Lambda表达式和linq表达式,用起来也得心应手,但是有的小伙伴 对匿名对象的查询与接收比较迷茫,(没有定义相应的实体),怎么在where()里面进行 条件筛选呢?常规用法我就不说 ...
- 当类型为dynamic的视图模型遭遇匿名对象
当年在ASP.NET MVC 1.0时代我提到,在开发时最好将视图的Model定制为强类型的,这样可以充分利用静态检查功能进行排错.不过有人指出,这么做虽然易于静态检查,但是定义强类型的Model类型 ...
- 匿名对象 构造方法 重载 构造代码块 this 关键字
一.匿名对象 1.匿名对象 :没有名字对象 2.匿名对象的使用注意点: 1.我们一般不会用匿名对象给属性赋值,无法获取属性值. 2.匿名对象永远都不可能事一个对象. 3.匿名对象的好处 : 书写简单. ...
- C# 匿名对象随笔
最新更新请访问: http://denghejun.github.io C#中匿名对象的一般写法是这样的: object o=new {Name="TestName"}; ...
- MongoDB学习笔记~以匿名对象做为查询参数,方便查询子对象
回到目录 对于MongoDB的封装还在继续,对于不断追求简单的编程还在继续,对于喜欢代码的那么感觉,还在继续... 当你的mongo数据表里有子对象时,尤其是列表对象时,使用官方的驱动很是不爽,要记得 ...
- dynamic与匿名对象
用dynamic接收匿名对象很方便,因为不需要去定义model了,但是也有一个弊端,就是匿名对象的作用范围是internal的,也就是只能存在于当前程序域,所以用dynimic跨程序域去接收一个匿名对 ...
- 构造 & 析构 & 匿名对象
以前仅知道创建对象,但对匿名对象的了解基本为0. 通过阅读google chromium源代码 中关于 log 的使用,查阅相关资料,了解了一下匿名对象,予以记录. 什么是匿名对象 匿名对象可以理 ...
- java匿名类和匿名对象及this的其他用法
/* 匿名内部类:就是内部类的简写格式. 必须前提:内部类必须继承或者实现一个类或者接口. 匿名内部类其实就是一个匿名 子类对象. 格式:new 父类对象 or 接口(){ 子类内容:(覆盖父类的, ...
- java匿名对象_面向对象
class Student{ public void tell(){ System.out.println("Hello jikexueyuan"); } public void ...
随机推荐
- 【u027】神秘大三角
Time Limit: 1 second Memory Limit: 128 MB [问题描述] 判断一个点与已知三角形的位置关系. [输入格式] 前三行:每行一个坐标,表示该三角形的三个顶点 第四行 ...
- [Node.js] Identify memory leaks with nodejs-dashboard
In this lesson, I introduce a memory leak into our node.js application and show you how to identify ...
- .net core ——微服务内通信Thrift和Http客户端响应比较
原文:.net core --微服务内通信Thrift和Http客户端响应比较 目录 1.Benchmark介绍 2.测试下微服务访问效率 3.结果 引用链接 1.Benchmark介绍 wiki中有 ...
- 最新版Butterknife plugin支持butterknife7.0.1和兼容butterknife 6.1.0及下面
JakeWharton 的butterknife帮我们有效的攻克了findViewById及各种view的监听事件泛滥的问题,极大的简化了代码,假设使用了android Studio开发的配上avas ...
- Java NIO(6)----NIO与IO
当学习了Java NIO和IO的API后,一个问题立即涌入脑海: 我应该何时使用IO.何时使用NIO呢?在本文中,我会尽量清晰地解析Java NIO和IO的差异.它们的使用场景,以及它们怎样影响您的代 ...
- 使用OTP原则构建一个非阻塞的TCP服务器
http://erlangcentral.org/wiki/index.php/Building_a_Non-blocking_TCP_server_using_OTP_principles CONT ...
- 建立一个OTP应用
http://www.javaeye.com/topic/374167 以下是在erlang项目开发中的一些记录,即包含很多通俗易懂的原则,也包含一些似是而非的建议,比较混乱,还没有积累到一个可以分门 ...
- 学习鸟哥的Linux私房菜笔记(4)——文件
一.检查文件 用ls -l以长模式查看文件的详细信息,包含当前目录的硬盘使用空间.文件类型.文件权限.硬连接数.文件拥有者.文件所属组.文件大小.更改时间.文件名称. 用file检查文件类型 由于li ...
- CentOS虚拟机克隆后IP设置
1.网卡设置 vim /etc/udev/rules.d/70-persistent-net.rules 将新生成的eth1改名为eth0,并将原来的eth0注释或删除,同时复制mac地址 2.IP设 ...
- TensorFlow 实战(一)—— 交叉熵(cross entropy)的定义
对多分类问题(multi-class),通常使用 cross-entropy 作为 loss function.cross entropy 最早是信息论(information theory)中的概念 ...