[AaronYang]C#人爱学不学[5]
这世上有三样东西是别人抢不走的:一是吃进胃里的食物,二是藏在心中的梦想,三是读进大脑的书 --Aaronyang的博客(www.ayjs.net)
1. 数组-的疑惑?
1.1 多维数组 例如int[,] a=new int[2,4]; 共两行,每组4个。 int[,] a={{1,2,3,4},{6,7,8,9}}
1.2 锯齿数组 例如int[][] a=new int[2][];可以确定一共2行,但每行几个不知道,所以可以任意个。导致每行的长度可能不一致,形成一个锯齿
1.3 不常用Array写法 例如Array a = Array.CreateInstance(typeof(int), 5); 然后SetValue(值,位置)/GetValue(位置) , Array.Copy()与Array.Clone()(浅复制) Array.Sort(array数组,[比较器])
1.4 数组中如果是具有结构型的对象,比较可能不像int或者string那样简单,可以使用 IComparer<T>写个比较器,网上教程很多
1.5 yield方便创建枚举器。yield return返回集合的一个元素,并移动到下一个元素上。yield break 停止迭代
1.6 (net4.0+) 元组- Tuple<T1,T2,T3....TResult>的使用,说白了,可以返回任意类型组装成一个"数组"返回回去,用这个感觉很方便,不是吗
由此也看到了,最多8个

1.7 (net4.0+) 数组和元祖都实现接口IStructuralEquatable和IstructuralComparable,可以比较引用,还可以比较内容。这些接口是显示接口。
IStructuralEquatable主要用于比较两个元组或者数组是否有相同的内容。IstructuralComparable 用于给元组或数组排序

例子:
①定义个内容比较或者排序对比
/// <summary>
/// aaronyang 2014年12月29日23:00:25
/// 比较 两个房子户型是否基本一致
/// </summary>
public class House : IEquatable<House>
{
/// <summary>
/// 面积
/// </summary>
public string MianJi { get; set; }
/// <summary>
/// 厅数
/// </summary>
public int Ting { get; set; }
/// <summary>
/// 室数
/// </summary>
public int Shi { get; set; }
public override string ToString()
{
return String.Format(MianJi+"面积,{0}室{1}厅",Shi,Ting);
}
public override bool Equals(object obj)
{
Console.WriteLine(obj.ToString());
if (obj == null)
{
return base.Equals(obj);
}
return Equals(obj as House); } public override int GetHashCode()
{
return base.GetHashCode();
} public bool Equals(House other)
{
if (other == null)
{
return base.Equals(other);
}
return this.MianJi == other.MianJi && this.Ting == other.Ting && this.Shi == other.Shi;
} }
使用对比
static void Main(string[] args)
{
// Array a = Array.CreateInstance(typeof(int), 5);
//Tuple<int, string, double,> a = Tuple.Create<int, string, double>(1, "aaronyang", 0.13);
//Console.WriteLine(a.Item1+" "+a.Item2+" "+a.i); var house1 = new House { MianJi = "100平方", Shi = , Ting = };
House[] houses1 ={
new House{
MianJi = "110平方", Shi = , Ting =
},
house1
};
House[] houses2 ={
new House{
MianJi = "110平方", Shi = , Ting =
},
house1
};
if (houses1 != houses2)
{
Console.WriteLine("两个房子不是同一个"); //=> √
}
else {
Console.WriteLine("两个房子不是基本一致");
}
Console.ReadKey();
}
关于比较两个Tuple是否相等可以使用 tuple1.Equals(tuple2,new TupleComparer()) public class Tuple:IEqualityComparer{ ... }
关于数组方面的没什么好复习的了,感觉很多人应该没尝试过用Tuple,但是真的挺好用的。还有linq中经常用的对象比较器,比如linq 中distinct时候,去重复的比较器,今天就写这么点了,88
[AaronYang]C#人爱学不学[5]的更多相关文章
- [AaronYang]C#人爱学不学[1]
当前编写时间:2014年12月24日21:11:14 编写人:杨洋(Aaronyang) 新文章:[AaronYang]C#人爱学不学[1] 声明:->可以理解为 联想到,或者关联的意思. ...
- [AaronYang]C#人爱学不学[6]
不要回头,不要将就,做到这两点,人生就会简单很多幸福很多 --Aaronyang的博客(www.ayjs.net)-www.8mi.me 1. 运算符,还有哪些你能学到? 1.1 不安全运算符: si ...
- [AaronYang]C#人爱学不学[4]
本文章不适合入门,只适合有一定基础的人看.我更相信知识细节见高低,我是从4.0开始学的,终于有时间系统的学习C#5.0,是5.0中的知识,会特殊标记下.但写的内容也可能含有其他版本framework的 ...
- [AaronYang]C#人爱学不学[3]
本文章不适合入门,只适合有一定基础的人看.我更相信知识细节见高低,我是从4.0开始学的,终于有时间系统的学习C#5.0,是5.0中的知识,会特殊标记下.但写的内容也可能含有其他版本framework的 ...
- [AaronYang]C#人爱学不学8[事件和.net4.5的弱事件深入浅出]
没有伟大的愿望,就没有伟大的天才--Aaronyang的博客(www.ayjs.net)-www.8mi.me 1. 事件-我的讲法 老师常告诉我,事件是特殊的委托,为委托提供了一种发布/订阅机制. ...
- [AaronYang]C#人爱学不学[7]
做一个决定,并不难,难的是付诸行动,并且坚持到底 --Aaronyang的博客(www.ayjs.net)-www.8mi.me 1. 委托-我的总结 1.1 委托:面试我都会说,把方法当参数.委托包 ...
- [AaronYang]C#人爱学不学[2]
1. 记事本写C#,脱离vs 新建记事本,名字为 helloworld.cs using System; namespace Hello{ public class HelloWorldSay{ st ...
- AY写给国人的教程- VS2017 Live Unit Testing[1/2]-C#人爱学不学-aaronyang技术分享
原文:AY写给国人的教程- VS2017 Live Unit Testing[1/2]-C#人爱学不学-aaronyang技术分享 谢谢大家观看-AY的 VS2017推广系列 Live Unit Te ...
- AY写给国人的教程- VS2017 Live Unit Testing[2/2]-C#人爱学不学-aaronyang技术分享
原文:AY写给国人的教程- VS2017 Live Unit Testing[2/2]-C#人爱学不学-aaronyang技术分享 谢谢大家观看-AY的 VS2017推广系列 Live Unit Te ...
随机推荐
- tfs witadmin
有时候对TFS的操作需要使用命令行,因为无图形界面进行操作. 我们可以进入Visual Studio Tools使用Developer Command Prompt进行操作. 使用命令 witadmi ...
- Mac/Linux 定时运行命令行
想要开机运行的话可以通过 mac 自带的 Automator 将要运行的命令打包成一个app,用后在用户组的“登录时启动”列表里加上那个app. 但是想要定时运行就不能这么做了,要用上一个叫cront ...
- leetcode抽风的解决办法
添加hosts: 173.230.148.103 oj.leetcode.com173.230.148.103 leetcode.com
- Neo4j 高可用集群安装
安装neo4j高可用集群,抓图安装过程 http://www.ibm.com/developerworks/cn/java/j-lo-neo4j/ Step1.下载neo4j商业版并解压,复制为neo ...
- runv kill 流程分析
1.runv/kill.go Action: func(context *cli.Context) 该函数做的工作很简单,就是通过grpc客户端,发送一个grpc请求而已,如下: c.Signal(n ...
- 【Android UI设计与开发】7.底部菜单栏(四)PopupWindow 实现显示仿腾讯新闻底部弹出菜单
前一篇文章中有用到 PopupWindow 来实现弹窗的功能.简单介绍以下吧. 官方文档是这样解释的:这就是一个弹出窗口,可以用来显示一个任意视图.出现的弹出窗口是一个浮动容器的当前活动. 1.首先来 ...
- 分享用于学习C++图像处理的代码示例
为了便于学习图像处理并研究图像算法, 俺写了一个适合初学者学习的小小框架. 麻雀虽小五脏俱全. 采用的加解码库:stb_image 官方:http://nothings.org/ stb_image. ...
- POJ 1182 食物链 (三态种类并查集)
这题首先不说怎么做,首先要提醒的是..:一定不要做成多组输入,,我WA了一个晚上加上午,,反正我是尝到苦头了,,请诸君千万莫走这条弯路..切记 这题是上一题(Find them and Catch t ...
- Eclipse安装Database Development插件。
早期版本的Eclipse,自带Database Development,用着挺方便的,可是自己的最新版Eclipse反而没有.于是乎钻研了下,找到了安装方法.和汉化包安装很类似: 菜单栏里选择 ...
- java8-3 多态的好处和弊端以及多态的理解
多态的好处: A:提高了代码的维护性(继承保证) B:提高了代码的扩展性(由多态保证) 猫狗案例代码 class Animal { public void eat(){ System.out.prin ...