[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 ...
随机推荐
- 09_Sum游戏(UVa 10891 Game of Sum)
问题来源:刘汝佳<算法竞赛入门经典--训练指南> P67 例题28: 问题描述:有一个长度为n的整数序列,两个游戏者A和B轮流取数,A先取,每次可以从左端或者右端取一个或多个数,但不能两端 ...
- paypal IPN 接口返回INVALID参数可能问题
工作于浏览器Chrome时,登录IPN Simulator页发送测试数据,payment_date栏位值中出现乱码,导致无法返回正确的VERIFIED,在此记录.
- 由fdopen和fopen想到的
ISO C并没有规定fdopen,而是POSIX的补充. FILE *fopen(const char *path, const char *mode); FILE *fdopen(int fd, c ...
- linux多线程同步pthread_cond_XXX条件变量的理解
在linux多线程编程中,线程的执行顺序是不可预知的,但是有时候由于某些需求,需要多个线程在启动时按照一定的顺序执行,虽然可以使用一些比较简陋的做法,例如:如果有3个线程 ABC,要求执行顺序是A-- ...
- 搜索+剪枝 POJ 1416 Shredding Company
POJ 1416 Shredding Company Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 5231 Accep ...
- jquery 地址栏链接与a标签链接匹配 特效代码总结(二)
如题所述,当出现这样的功能,点击某个链接后,给跳转后的该链接地址添加样式,通过添加class为current来增加特殊样式. 如图所示:点击HTML+css3跳转后,给其添加如图样式: js代码如下: ...
- HDU 4045 Machine scheduling --第二类Strling数
题意: n个数(1~n)取出r个数,取出的数相差要>=k, 然后分成m个可空组,问有多少种情况. 解法: 先看从n个数中取r个相差>=k的数的方法数,可以发现 dp[i][j] = dp[ ...
- 2016百度之星-初赛(Astar Round2A)AII X
Problem Description F(x,m) 代表一个全是由数字x组成的m位数字.请计算,以下式子是否成立: F(x,m) mod k ≡ c Input 第一行一个整数T,表示T组数据. 每 ...
- 关于软件测试人员能力模型的建立(from知乎)
转自: http://www.zhihu.com/question/20254092 测试思维方面:1.测试基础理论(测试流程.测试的基础知识)2.测试用例设计方法论(黑盒.白盒)3.软件质量体系(建 ...
- 分享一例脚本发版和tomcat重启脚本
线上有个网站业务部署在tomcat上,由于频繁上线修改,需要经常启动tomcat.tomcat服务自带的bin下没有重启脚本,下面分享一例脚本发版和tomcat重启脚本: 1)现将业务代码从svn里下 ...