本文章由cartzhang编写,转载请注明出处。 所有权利保留。

文章链接:http://blog.csdn.net/cartzhang/article/details/52577283

作者:cartzhang

一.字符串的索引可以有多个参数的。

常见的为:

public string this[string key] {
get { return internalDictionary[key]; }
}

比如:

x = test["a"];

但是也可以这样:

 x = something[“a”, “b”, “c”, “d”]
public IEnumerable<string> this[params string[] keys]
{
get { return keys.Select(key => internalDictionary[key]).AsEnumerable(); }
}

得到的结果就逐次输出。

二. 字符串在代码中多次使用,其实就一个实例。

C#对字符串有字符串驻留,也就是string interning。每次在编译器中被使用就在内存列表中添加一个索引到runtime中。

可以使用String.Inter(“chakknsls”)来查看。

String.Intern(“what”) == “what”

这个代码总会返回true,因为在本代码中已经定义了一个string.

String.IsInterned(“wh” + “at”) == “what”,由于编译器的优化,这个同样返回True。

而下面这个只在你程序中或Runtimed 其他地方定义了Runtime的时候,才会返回true.

String.IsInterned(new string(new char[] { ‘w’,’h’,’a’,’t’ }) == new string(new char[] { ‘w’,’h’,’a’,’t’ }) 

更要注意的是

 (object)”Hi” == (object)”Hi”  

这个在应用程序中会返回True,但是若Debug它就会返回False。因为debug不会看string的intern.

这个暂时不理解。VS测试一下,在Debug下也一直都为true。可能是版本变化升级吧

三. 静态变量

static class Program {
private static int a = 5;
private static int b = a; static void Main(string[] args) {
Console.WriteLine(b);
}
}

静态遍历在初始化时候,并不按照编写顺序执行,所以这样有机会造成输出为零的概率。

四. For 循环和ForEach 的效率问题

在于for循环不会产生多余的操作。

而ForEach会产生多余操作。主要原因在于编译器的理解不同。使用的算法不同。在ForEach中,有不必要的状态比较。

但是不同的.Net 版本之间的差异也是比较大的。

1).Net 3.5 版本的For循环



//

2).Net 3.5 版本的Foreach循环

3).Net 4.5 版本For循环

4).Net 4.5 版本Foreach循环



3.5和和4.5.2差别还是蛮大的。

后来的.Net优化挺厉害的。个人觉得For和ForEach没有太多差,从命令上来看貌似Foreach更少命令。但是就执行时间这就不好说了,个人觉得基本没差。

五.参考:

http://www.codeproject.com/Articles/6759/FOREACH-Vs-FOR-C

https://damieng.com/blog/2012/10/29/8-things-you-probably-didnt-know-about-csharp

若有问题,随时联系!!!

非常感谢!!!

—————————THE————END——————————-

C#学习你需要知道的---(For和Foreach)的更多相关文章

  1. 201621123001 《java程序设计》第2周学习总结

    1. 本周学习总结 学会String 类的一些用法,比如用subString()截取字符串,频繁对字符串进行修改应使用StringBuilder()等. 学会Array 类的一些用法,比如sort() ...

  2. java SE 入门之控制语句&方法&递归算法(第五篇)

    一 控制语句(选择结构) 在学习控制语句之前,我们要先明确两件事情,什么是顺序结构(也叫做顺序执行),什么是选择结构 (分支结构或分支执行或选择执行),我们的代码执行是分为先后顺序的,就像我们之前写的 ...

  3. jstl的if标签和forEach标签的解析

    今天上午学习了jstl的if标签和forEach标签(其它标签用的很少,所以没讲,只讲了这两个标签),然后通过代码练习了一下,现在总结. 首先导入包,从Apache的网站下载JSTL的JAR包.进入 ...

  4. array数据处理

    之前写过map,forEach,现在用到every和some,记录一下当作学习笔记,方便以后翻阅. forEach是没有返回值的,对原数组进行修改: // forEach没有返回值,只针对每个元素调用 ...

  5. Java5新特性对数组的支持

    增强for循环 → for-each for (参数类型参数名 : 数组名) { 代码块 } Eg: package reviewDemo; public class Demo6 { public s ...

  6. 从直播编程到直播教育:LiveEdu.tv开启多元化的在线学习直播时代

    2015年9月,一个叫Livecoding.tv的网站在互联网上引起了编程界的注意.缘于Pingwest品玩的一位编辑在上网时无意中发现了这个网站,并写了一篇文章<一个比直播睡觉更奇怪的网站:直 ...

  7. Angular2学习笔记(1)

    Angular2学习笔记(1) 1. 写在前面 之前基于Electron写过一个Markdown编辑器.就其功能而言,主要功能已经实现,一些小的不影响使用的功能由于时间关系还没有完成:但就代码而言,之 ...

  8. ABP入门系列(1)——学习Abp框架之实操演练

    作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从py ...

  9. 消息队列——RabbitMQ学习笔记

    消息队列--RabbitMQ学习笔记 1. 写在前面 昨天简单学习了一个消息队列项目--RabbitMQ,今天趁热打铁,将学到的东西记录下来. 学习的资料主要是官网给出的6个基本的消息发送/接收模型, ...

  10. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

随机推荐

  1. 【Microsoft Azure学习之旅】测试消息队列(Service Bus Queue)是否会丢消息

    组里最近遇到一个问题,微软的Azure Service Bus Queue是否可靠?是否会出现丢失消息的情况? 具体缘由如下, 由于开发的产品是SaaS产品,为防止消息丢失,跨Module消息传递使用 ...

  2. Python ssh连接Linux服务器报Incompatible ssh peer (no acceptable kex algorithm) 解决方法

    python通过ssh连接linux服务器,部分服务器出现如下异常 03:50:48.725 FAIL ftp operation failed, Incompatible ssh peer (no ...

  3. ring0 SSDTHook

    SSDT 的全称是 System Services Descriptor Table,系统服务描述符表.这个表就是一个把 Ring3 的 Win32 API 和 Ring0 的内核 API 联系起来. ...

  4. OpenGL纹理高级

    矩形纹理 对于二维纹理来说,除了GL_TEXTURE_2D之外,使用GL_TEXTURE_RECTANGLE就可以使用矩形纹理. 矩形纹理几大特点: 不能Mip,只能加载glTexImage2D的le ...

  5. sublim的正则匹配(待续)

    ctrl+H 打开匹配模式 打开正则匹配模式 正则匹配的一些方法:  点代表的是任意字符.* 代表的是取 0 至 无限长度问号代表的是非贪婪模式.三个链接在一起是取尽量少的任意字符,一般不会这么单独写 ...

  6. chromedp自动启动为headless模式

    // Command click is a chromedp example demonstrating how to use a selector to // click on an element ...

  7. 关于Content-Type: multipart/form-data的支持

    关于Content-Type: multipart/form-data的支持  发布于 537天前  作者 yzhang226  303 次浏览  复制  上一个帖子  下一个帖子  标签: 无 今天 ...

  8. 【BZOJ1067】[SCOI2007] 降雨量(RMQ+分类讨论)

    点此看题面 大致题意:请你判断"\(x\)年是自\(y\)年以来降雨量最多的"这句话的真假. 离散化/\(lower\_bound\) 首先,考虑到年份的范围非常大,便可以离散化. ...

  9. 2018.8.3 Java中容易犯错误的问题思考与总结

    Java容易犯错误的问题思考 float型 float f = 3.4 是否正确 不正确,应该用强制类型转换.如下所示:float f = (float)3.4 或float f = 3.4f 在ja ...

  10. 2017.11.23 利用Cookie管理实现自动登陆

    Cookie管理 Cookie对象是由服务器产生并保存在客户端的信息,常用他记录用户个人信息以及个性化设置.用户每次访问网点时,应用程序就可以检索以前保存的信息 Cookie对象属于的类是javax. ...