`
hcyoo
  • 浏览: 21031 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

C#几个不常用的关键字

    博客分类:
  • .net
阅读更多
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/
分享到:
评论
7 楼 Cresting 2009-12-24  
using还是常看到或用到的,对一些实现了IDisposable接口的类,yield对我来说的确用的比较少的...
6 楼 Taven.Li 2009-12-19  
确实有一些很少用到的关键字
5 楼 wandou 2009-12-19  
using可是常用关键字。
4 楼 ray_linn 2009-12-18  
呵呵,yield是迭代器。
3 楼 RednaxelaFX 2009-12-17  
幸存者 写道
C#最不常用关键字候选:stackalloc, volatile, sizeof

volatile常用与否倒不一定……不过用的时候很可能代码有问题 =_=||||
unsafe、stackalloc、fixed、sizeof还有&、*、->都属于相似的“常用程度”了orz

P.S. stackalloc挺讨厌的……在VS里要打static总是被IntelliSense先忽悠到stackalloc上 T.T
2 楼 幸存者 2009-12-17  
C#最不常用关键字候选:stackalloc, volatile, sizeof
1 楼 RednaxelaFX 2009-12-17  
话说这俩关键字都挺常用的……取决于使用场景和使用者使用C#的程度。特别是如果代码里有很多需要用到除内存外的别的资源时,using语句是非常常用的。using只是调用Dispose方法而已,并不导致对象被“回收”。
yield也跟“循环”没啥直接关系。只不过大家经常用循环来遍历IEnumerable<T>所以看起来似乎跟循环有关系……|||

要说不常用的话,fixed、unsafe、extern之类的更不常用了 >_<

相关推荐

    C#常用关键字及含义.doc

    "C#常用关键字及含义" C#是一种现代的高级语言,它提供了很多种关键字来实现不同的功能。这些关键字可以分为以下几类:类型关键字、控制流关键字、异常处理关键字、类和对象关键字、访问修饰符关键字等。 类型...

    C#中的Internal关键字小结

    首先,理清几个概念:项目(project)、解决方案(solution)、程序集(assembly)、命名空间(namespace)。 项目(project) 就是我们开发的一个软件。.NET下,项目有多种类型,如控制台、Windows应用程序、类库...

    描述C#多线程中lock关键字的使用分析

    这可能带来的问题就是几个线程同时执行一个函数,导致数据的混乱,产生不可预料的结果,因此我们必须避免这种情况的发生。C#提供了一个关键字lock,它可以把一段代码定义为互斥段(critical section),互斥段在一个...

    .net(c#)中的new关键字详细介绍

    考虑以下几个问题: 1、new一个class对象和new一个struct或者new一个enum有什么不同?  答:new一个class时,new完成2个内容:一是调用newobj命令为实例在托管堆中分配内存,二是调用构造函数实现对象初始化。  ...

    深入探讨C#中的const、readonly关键字

    一:值得推敲的几个地方 1.先来看看msdn上面对const是怎么说的,我们会看到。不能修改,编译时常量这些关键性信息。 Q: const为什么不能被修改。 A:这个很简单,很多教科书上面都说,当编译器编译时,会将常量的...

    c#多线程中Lock()关键字的用法小结

    本文介绍C# lock关键字,C#提供了一个关键字lock,它可以把一段代码定义为互斥段(critical section),互斥段在一个时刻内只允许一个线程进入执行,而其他线程必须等待。 每个线程都有自己的资源,但是代码区是共享...

    c#事件机制归纳,c#事件机制归纳,c#事件机制归纳

    委派的实现过程可以分为以下几个步骤: 1. 声明委派类型:使用 delegate 关键字声明委派类型,例如:`delegate int mathop(int i1, int i2);` 2. 创建委派实例:使用 new 关键字创建委派实例,例如:`mathop op1 = ...

    c#实现几种排序算法,并输出关键字比较次数和交换次数

    6个排序的算法...折腾我挺久的 快速排序是参照了另外一个人的程序,而堆排序也是...堆排序我自己都看不怎么懂 主要也是关键字比较次数和交换次数吧.也不知道对不对 有错误还希望各位指出,谢谢!

    C# partial关键字说明

    局部类型允许我们将一个类、结构或接口分成几个部分,分别实现在几个不同的.cs文件中。 局部类型适用于以下情况: (1) 类型特别大,不宜放在一个文件中实现。 (2) 一个类型中的一部分代码为自动化工具生成的代码,...

    C#通过OPC连接PLC读写功能案例 (1) c#经典案例.doc

    标签中只有一个关键字,即 "c#",这表明该案例的主要语言是 C#。 部分内容: 从部分内容中可以看出,该案例提供了一个完整的示例代码,展示如何使用 OPC 协议连接 PLC,读取和写入 PLC 的数据。代码中使用了 ...

    详解C# partial 关键字的使用

    局部类型允许我们将一个类、结构或接口分成几个部分,分别实现在几个不同的.cs文件中。 局部类型适用于以下情况: (1) 类型特别大,不宜放在一个文件中实现。 (2) 一个类型中的一部分代码为自动化工具生成的代码,...

    基于C#语言对文件夹下所有Excel文件进行批处理

    这个程序是一个使用 C# 编写的控制台应用程序,它通过用户输入文件夹路径,读取该路径下所有名称中包含 "自定" 的 Excel 文件。然后,程序在这些 Excel 文件中查找包含 "需要数据" 的单元格,并输出该单元格的位置和...

    C#中partial关键字的作用

    局部类型允许我们将一个类、结构或接口分成几个部分,分别实现在几个不同的.cs文件中。 局部类型适用于以下情况: (1) 类型特别大,不宜放在一个文件中实现。 (2) 一个类型中的一部分代码为自动化工具生成的代码,...

    C#多线程学习入门圣典

    Thread类有几个至关重要的方法 3 C#多线程学习(二) 如何操纵一个线程 3 Thread.ThreadState 属性 5 线程的优先级 5 C#多线程学习(三) 生产者和消费者 5 While争夺发生,lock语句 5 Monitor 类锁定一个对象 8 C#多...

    c#学习笔记.txt

    如前所述,我是一个狮子座男人,一度我认为学习Java会使我看起来与众不同,可是几个月以后我放弃了这个选择,我看了论坛里关于这两种语言孰优孰劣的讨论,最终选择了C#,请不要问我为何做出这样的选择,很多人认为...

    (C#)词法分析器

    1、该词法分析器要求至少能够识别以下几类单词: (1)关键字:else if int return void while共6个,所有的关键字都是保留字,并且必须是小写; (2)标识符:识别与C语言词法规定相一致的标识符,通过下列...

    你必须知道的C#的25个基础概念(附源码)

    如果基类中的虚属性只有一个属性访问器,那么继承类重写该属性后可以有几个属性访问器?如果基类中有 get 和 set 两个呢? 14.abstract 可以和 virtual 一起使用吗?可以和 override 一起使用吗? 15.接口可以包含...

    c#基础学习问答c#基础学习问答

    13.如果基类中的虚属性只有一个属性访问器,那么继承类重写该属性后可以有几个属性访问器?如果基类中有 get 和 set 两个呢? 14.abstract 可以和 virtual 一起使用吗?可以和 override 一起使用吗? 15.接口可以...

    C#微软培训资料

    第一部分 C#语言概述.4 第一章 第一章第一章 第一章 .NET 编 编 编程语言 程语言编程语言 程语言 C#.4 1.1 Microsoft.NET——一场新的革命.4 1.2 .NET 与 C#.6 1.3 C#语言的特点.8 1.4 小 结 .11...

Global site tag (gtag.js) - Google Analytics