这世上有三样东西是别人抢不走的:一是吃进胃里的食物,二是藏在心中的梦想,三是读进大脑的书 --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+) 数组和元祖都实现接口IStructuralEquatableIstructuralComparable,可以比较引用,还可以比较内容。这些接口是显示接口。

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]的更多相关文章

  1. [AaronYang]C#人爱学不学[1]

    当前编写时间:2014年12月24日21:11:14   编写人:杨洋(Aaronyang) 新文章:[AaronYang]C#人爱学不学[1] 声明:->可以理解为 联想到,或者关联的意思. ...

  2. [AaronYang]C#人爱学不学[6]

    不要回头,不要将就,做到这两点,人生就会简单很多幸福很多 --Aaronyang的博客(www.ayjs.net)-www.8mi.me 1. 运算符,还有哪些你能学到? 1.1 不安全运算符: si ...

  3. [AaronYang]C#人爱学不学[4]

    本文章不适合入门,只适合有一定基础的人看.我更相信知识细节见高低,我是从4.0开始学的,终于有时间系统的学习C#5.0,是5.0中的知识,会特殊标记下.但写的内容也可能含有其他版本framework的 ...

  4. [AaronYang]C#人爱学不学[3]

    本文章不适合入门,只适合有一定基础的人看.我更相信知识细节见高低,我是从4.0开始学的,终于有时间系统的学习C#5.0,是5.0中的知识,会特殊标记下.但写的内容也可能含有其他版本framework的 ...

  5. [AaronYang]C#人爱学不学8[事件和.net4.5的弱事件深入浅出]

    没有伟大的愿望,就没有伟大的天才--Aaronyang的博客(www.ayjs.net)-www.8mi.me 1. 事件-我的讲法 老师常告诉我,事件是特殊的委托,为委托提供了一种发布/订阅机制. ...

  6. [AaronYang]C#人爱学不学[7]

    做一个决定,并不难,难的是付诸行动,并且坚持到底 --Aaronyang的博客(www.ayjs.net)-www.8mi.me 1. 委托-我的总结 1.1 委托:面试我都会说,把方法当参数.委托包 ...

  7. [AaronYang]C#人爱学不学[2]

    1. 记事本写C#,脱离vs 新建记事本,名字为 helloworld.cs using System; namespace Hello{ public class HelloWorldSay{ st ...

  8. AY写给国人的教程- VS2017 Live Unit Testing[1/2]-C#人爱学不学-aaronyang技术分享

    原文:AY写给国人的教程- VS2017 Live Unit Testing[1/2]-C#人爱学不学-aaronyang技术分享 谢谢大家观看-AY的 VS2017推广系列 Live Unit Te ...

  9. AY写给国人的教程- VS2017 Live Unit Testing[2/2]-C#人爱学不学-aaronyang技术分享

    原文:AY写给国人的教程- VS2017 Live Unit Testing[2/2]-C#人爱学不学-aaronyang技术分享 谢谢大家观看-AY的 VS2017推广系列 Live Unit Te ...

随机推荐

  1. 排序(qsort sort的使用)

    前情:因平常写代码是常将比较函数弄混(写好了排序还要确认一下-.-!),还是写篇博客,方便以后查阅 C语言qsort函数对int类型数组排序: #include "stdio.h" ...

  2. zabbix安装排错过程

    在讲安装过程之前需要先把zabbix的工作流程简单的讲一遍:zabbix是个开源监控软件,通过web才能更直观的监控我们想要监控的主机,同时,zabbix从被监控主机获取到的信息需要存放在数据库中,因 ...

  3. 迅为4412开发板Linux驱动教程之GPIO的初始化

    视频下载地址:http://pan.baidu.com/s/1c06oiti GPIO的初始化 • 在内核源码目录下使用命令“ls drivers/gpio/*.o”,可以看到“gpio-exynos ...

  4. 【Javascript Demo】移动端访问PC端网页时跳转到对应的移动端网页

    不想通过CSS自适应在PC端和移动端分别显示不同的样式,那么只能通过在移动端访问PC端网页时跳转到对应的移动端网页了,那么怎么跳转呢,网上也有很多文章说明,下面是本人测试有效的方式. 1.效果图 PC ...

  5. AC日记——舒适的路线 codevs 1001 (并查集+乱搞)

    1001 舒适的路线 2006年  时间限制: 2 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题解  查看运行结果     题目描述 Description Z小镇是 ...

  6. 一个简单的python爬虫,以豆瓣妹子“http://www.dbmeizi.com/category/2?p= ”为例

    本想抓取网易摄影上的图,但发现查看html源代码时找不到图片的url,但firebug却能定位得到.(不知道为什么???) 目标是抓取前50页的爆乳图,代码如下: import urllib2,url ...

  7. <global-results>怎么用

    <global-results>中的result可以被所有action跳转,所有action都可以跳转到result 所有返回值为“json”的action,都可以跳转到json.jsp

  8. RelayCommand命令

    原文:http://www.cnblogs.com/xiepeixing/archive/2013/08/13/3255152.html 常用Wpf开发中我们在ViewModel中实现INotifyP ...

  9. Oracle11G 卸载步骤

    (之前因为不知道偶电脑是因为安装了oracle后,才导致的长达两周的开机速度要足足10分钟,以前只有一分钟不到!可以想象oracle的服务启动的强大,知道后,偶果断立即卸载掉!) 一.在oracle1 ...

  10. 待整理-coredump

    Linux下如何产生coredump(gdb调试用) 任务发生异常,需要记录遗言信息,利用gdb调试,因此需要记录coredump文件.设置查看:在root用户下执行sysctl -a | grep ...