[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 ...
随机推荐
- Dictionary(HashMap)的实现
什么是哈希表? 哈希表(Hash table,也叫散列表),是根据key而直接进行访问的数据结构.也就是说,它通过把key映射到表中一个位置来访问记录,以加快查找的速度.这个映射函数叫做散列函数,存放 ...
- 分享十个JavaScript在线调试工具
测试Javascript可能是网页开发中最让人忧伤的工作.这里我找一些比较好的工具来帮助大家进行测试工作.这10款是我精选的基于浏览器的JavaScript在线调试工具,希望你们对你们有用. 1.Op ...
- fontAwesome代替网页icon小图标
引言 奥森图标(Font Awesome)提供丰富的矢量字体图标—通过CSS可以任意控制所有图标的大小 ,颜色,阴影. 网页小图标到处可见,如果一个网页都是干巴巴的文字和图片,而没有小图标,会显得非常 ...
- css中table tr:nth-child(even)改变tr背景颜色: IE7,8无效
例如: .my_table tr:nth-child(even){ background:#E6EDF5; } .my_table tr:nth-child(odd){ background:#F0F ...
- Unity的物理材质
Physic Materials资源包 在Unity中的项目导入Unity自带的资源包 Physic Materials,自带的资源包有不同种类的物理材质: Bouncy:有弹性的 Ice:结冰 Me ...
- java 21 - 6 字符缓冲流的特殊方法以及该方法高效复制文件
字符缓冲流的特殊方法: A.BufferedWriter: public void newLine():根据系统来决定换行符 private static void write() throws IO ...
- VS2013无法启动 IIS Express Web解决办法
不要勾选[覆盖应用程序根URL(U)],或让[覆盖应用程序根URL(U)]下面的输入框和上面的输入框的地址一样! 使用VS2013有一段时间了,因前期都是编写C/S程序,没有使用到B/S调试器.前几日 ...
- App_api设计
2014年,移动APP的热度丝毫没有减退,并没有像桌面软件被WEB网站那样所取代,不但如此,越来越多的传统应用.网站也都开始制作自己的移动APP,也就是我们常说的IOS客户端.android客户端.这 ...
- 浅析CSS——元素重叠及position定位的z-index顺序
多次在项目中遇到html页面元素的非期待重叠错误,多数还是position定位情况下z-index的问题.其实每次解决类似问题思路大致都是一样的,说到底还是对z-index的理解比较模糊,可以解决问题 ...
- trac项目管理平台
本文来自百科,由于是非Python开发者,所以仅为了拓宽知识面 1软件介绍 Trac是一个为软件开发项目需要而集成了Wiki和问题跟踪管理系统的应用平台,是一个开源软件应用.Trac以简单的方式建立了 ...