1、
yield
yield关键字会告诉编译器当前的函数是在一个循环内部,编译器会相应生成一个执行它在循环体内部所表示行为的类,yield和return关键字一起用于为枚举器对象提供返回值,比如说:在foreach内部的每一次循环内,yield关键字用于终止当前循环:
以下为MSDN示例代码
http://msdn.microsoft.com/en-us/library/9k7k7cf0.aspx
using System.Collections;
public classList
{
public static IEnumerable Power(int number, int exponent)
{
int counter = 0;
int result = 1;
while(counter++ < exponent)
{
result = result * number;
yield return result;
}
}
static void Main()
{
foreach (int i in Power(2, 8))
{
Console.Write("{0} ", i);
}
}
}
输出:
2
4
8
16
32
64
128
256
===================================
2、
using
定义一个范围,在范围外的对象将会被回收:
public static List<updatetime_model> UpdateTime(string datetime)
{
SqlParameter[] par = new SqlParameter[] {
new SqlParameter("@time",datetime)
};
List<updatetime_model> time = null;
[color=red]using (SqlDataReader r = SqlHelper.ExecuteReader("UpdateDate_GetTime",par))
{
while (r.Read())
{
if (time == null)
{
time = new List<updatetime_model>();
}
time.Add(ConvertTime(r));
}
if (r.NextResult() && r.Read())
{
lastdt = r.GetString(0);
}
}[/color]
return time;
}
参考链接:
http://hatim.indexdev.net/2009/12/08/10-not-so-well-known-keywords-in-c/
分享到:
相关推荐
首先,理清几个概念:项目(project)、解决方案(solution)、程序集(assembly)、命名空间(namespace)。 项目(project) 就是我们开发的一个软件。.NET下,项目有多种类型,如控制台、Windows应用程序、类库...
这可能带来的问题就是几个线程同时执行一个函数,导致数据的混乱,产生不可预料的结果,因此我们必须避免这种情况的发生。C#提供了一个关键字lock,它可以把一段代码定义为互斥段(critical section),互斥段在一个...
考虑以下几个问题: 1、new一个class对象和new一个struct或者new一个enum有什么不同? 答:new一个class时,new完成2个内容:一是调用newobj命令为实例在托管堆中分配内存,二是调用构造函数实现对象初始化。 ...
一:值得推敲的几个地方 1.先来看看msdn上面对const是怎么说的,我们会看到。不能修改,编译时常量这些关键性信息。 Q: const为什么不能被修改。 A:这个很简单,很多教科书上面都说,当编译器编译时,会将常量的...
本文介绍C# lock关键字,C#提供了一个关键字lock,它可以把一段代码定义为互斥段(critical section),互斥段在一个时刻内只允许一个线程进入执行,而其他线程必须等待。 每个线程都有自己的资源,但是代码区是共享...
6个排序的算法...折腾我挺久的 快速排序是参照了另外一个人的程序,而堆排序也是...堆排序我自己都看不怎么懂 主要也是关键字比较次数和交换次数吧.也不知道对不对 有错误还希望各位指出,谢谢!
局部类型允许我们将一个类、结构或接口分成几个部分,分别实现在几个不同的.cs文件中。 局部类型适用于以下情况: (1) 类型特别大,不宜放在一个文件中实现。 (2) 一个类型中的一部分代码为自动化工具生成的代码,...
局部类型允许我们将一个类、结构或接口分成几个部分,分别实现在几个不同的.cs文件中。 局部类型适用于以下情况: (1) 类型特别大,不宜放在一个文件中实现。 (2) 一个类型中的一部分代码为自动化工具生成的代码,...
这个程序是一个使用 C# 编写的控制台应用程序,它通过用户输入文件夹路径,读取该路径下所有名称中包含 "自定" 的 Excel 文件。然后,程序在这些 Excel 文件中查找包含 "需要数据" 的单元格,并输出该单元格的位置和...
局部类型允许我们将一个类、结构或接口分成几个部分,分别实现在几个不同的.cs文件中。 局部类型适用于以下情况: (1) 类型特别大,不宜放在一个文件中实现。 (2) 一个类型中的一部分代码为自动化工具生成的代码,...
C#关键字 关键字 abstract as base bool break byte case catch char checked class const continue decimal default delegate do double else enum event explicit extern false finally fixed float for foreach ...
Thread类有几个至关重要的方法 3 C#多线程学习(二) 如何操纵一个线程 3 Thread.ThreadState 属性 5 线程的优先级 5 C#多线程学习(三) 生产者和消费者 5 While争夺发生,lock语句 5 Monitor 类锁定一个对象 8 C#多...
如前所述,我是一个狮子座男人,一度我认为学习Java会使我看起来与众不同,可是几个月以后我放弃了这个选择,我看了论坛里关于这两种语言孰优孰劣的讨论,最终选择了C#,请不要问我为何做出这样的选择,很多人认为...
1、该词法分析器要求至少能够识别以下几类单词: (1)关键字:else if int return void while共6个,所有的关键字都是保留字,并且必须是小写; (2)标识符:识别与C语言词法规定相一致的标识符,通过下列...
如果基类中的虚属性只有一个属性访问器,那么继承类重写该属性后可以有几个属性访问器?如果基类中有 get 和 set 两个呢? 14.abstract 可以和 virtual 一起使用吗?可以和 override 一起使用吗? 15.接口可以包含...
13.如果基类中的虚属性只有一个属性访问器,那么继承类重写该属性后可以有几个属性访问器?如果基类中有 get 和 set 两个呢? 14.abstract 可以和 virtual 一起使用吗?可以和 override 一起使用吗? 15.接口可以...
第一部分 C#语言概述.4 第一章 第一章第一章 第一章 .NET 编 编 编程语言 程语言编程语言 程语言 C#.4 1.1 Microsoft.NET——一场新的革命.4 1.2 .NET 与 C#.6 1.3 C#语言的特点.8 1.4 小 结 .11...
《C#开发实例大全(基础卷)》筛选、汇集了C#开发从基础知识到高级应用各个层面约600个实例及源代码,每个实例都按实例说明、关键技术、设计过程、详尽注释、秘笈心法的顺序进行了分析解读。全书分6篇共25章,主要...
Thread类有几个至关重要的方法 3 C#多线程学习(二) 如何操纵一个线程 3 Thread.ThreadState 属性 5 线程的优先级 5 C#多线程学习(三) 生产者和消费者 5 While争夺发生,lock语句 5 Monitor 类锁定一个对象 8 ...