C#学习你需要知道的---(For和Foreach)
本文章由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)的更多相关文章
- 201621123001 《java程序设计》第2周学习总结
1. 本周学习总结 学会String 类的一些用法,比如用subString()截取字符串,频繁对字符串进行修改应使用StringBuilder()等. 学会Array 类的一些用法,比如sort() ...
- java SE 入门之控制语句&方法&递归算法(第五篇)
一 控制语句(选择结构) 在学习控制语句之前,我们要先明确两件事情,什么是顺序结构(也叫做顺序执行),什么是选择结构 (分支结构或分支执行或选择执行),我们的代码执行是分为先后顺序的,就像我们之前写的 ...
- jstl的if标签和forEach标签的解析
今天上午学习了jstl的if标签和forEach标签(其它标签用的很少,所以没讲,只讲了这两个标签),然后通过代码练习了一下,现在总结. 首先导入包,从Apache的网站下载JSTL的JAR包.进入 ...
- array数据处理
之前写过map,forEach,现在用到every和some,记录一下当作学习笔记,方便以后翻阅. forEach是没有返回值的,对原数组进行修改: // forEach没有返回值,只针对每个元素调用 ...
- Java5新特性对数组的支持
增强for循环 → for-each for (参数类型参数名 : 数组名) { 代码块 } Eg: package reviewDemo; public class Demo6 { public s ...
- 从直播编程到直播教育:LiveEdu.tv开启多元化的在线学习直播时代
2015年9月,一个叫Livecoding.tv的网站在互联网上引起了编程界的注意.缘于Pingwest品玩的一位编辑在上网时无意中发现了这个网站,并写了一篇文章<一个比直播睡觉更奇怪的网站:直 ...
- Angular2学习笔记(1)
Angular2学习笔记(1) 1. 写在前面 之前基于Electron写过一个Markdown编辑器.就其功能而言,主要功能已经实现,一些小的不影响使用的功能由于时间关系还没有完成:但就代码而言,之 ...
- ABP入门系列(1)——学习Abp框架之实操演练
作为.Net工地搬砖长工一名,一直致力于挖坑(Bug)填坑(Debug),但技术却不见长进.也曾热情于新技术的学习,憧憬过成为技术大拿.从前端到后端,从bootstrap到javascript,从py ...
- 消息队列——RabbitMQ学习笔记
消息队列--RabbitMQ学习笔记 1. 写在前面 昨天简单学习了一个消息队列项目--RabbitMQ,今天趁热打铁,将学到的东西记录下来. 学习的资料主要是官网给出的6个基本的消息发送/接收模型, ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
随机推荐
- 【Android学习入门】Android studio基本设置
1.背景设置 依次选择File->Settings-->Appearance & Behaviour->Apprearance,然后勾选 show line number. ...
- Arcgis for Js之鼠标经过显示对象名的实现
在浏览地图时,移动鼠标经过某个对象或者POI的时候,能够提示该对象的名称对用户来说是很实用的,本文讲述在Arcgis for Js中,用两种不同的方式来实现该效果. 为了有个直观的概念,先给大家看看实 ...
- C#队列Queue,利用队列处理订单
一.什么是队列 队列(Queue)代表了一个先进先出的对象集合.当您需要对各项进行先进先出的访问时,则使用队列.当您在列表中添加一项,称为入队,当您从列表中移除一项时,称为出队. 这是摘抄网上的.做了 ...
- WEB渗透测试之三大漏扫神器
通过踩点和查点,已经能确定渗透的目标网站.接下来可以选择使用漏扫工具进行初步的检测,可以极大的提高工作的效率. 功欲善其事必先利其器,下面介绍三款适用于企业级漏洞扫描的软件 1.AWVS AWVS ( ...
- python3 爬虫笔记(一)beautiful_soup
很多人学习python,爬虫入门,在python爬虫中,有很多库供开发使用. 用于请求的urllib(python3)和request基本库,xpath,beautiful soup,pyquery这 ...
- linux上传、下载文件rz、sz命令
1.介绍 sz命令是利用ZModem协议来从linux服务器传送文件到本地,一次可以传送一个或多个文件.相对应的从本地上传文件到Linux服务器,可以使用rz命令. 2.参数说明 -a,以文本方式传输 ...
- 五环之歌之PHP分页
根据以往的经验,对于很多初学者,分页功能实现起来还是有一定的困难的,为了帮大家解决这样的问题:特此献上五环之歌.从此分页功能便是如小岳岳唱歌一样简练,漂亮,精干.哈哈,不闲扯了.正式进入千锋PHP五环 ...
- traffic_light_bag_file 数据集 下载链接
链接:https://pan.baidu.com/s/19p5aGRfs6iFtN_SWAxCkRQ 密码:v9wx
- IOS 读取xib到tabelView
/**每一行显示怎样的ceLl*/ -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIn ...
- APP专项测试使用到的工具
最近在读<大话APP测试>,我也就是把需要使用的测试点做一个总结,目前是使用的工具进行的整理,后期慢慢把工具使用案例贴出来