1. yield

它表明一个方法,操作符或者get选择器里会出现迭代。

用yield return 同时返回每一个元素,  返回类型必须是IEnumerable, IEnumerable<T>, IEnumerator, or IEnumerator<T>.

Example:

public static IEnumerable<int> Power(int number, int exponent)

{

  int result = 1;

  for(int i = 0; i< exponent; i++)

  {

    result = result * number;

    yield return result;

  }

}

static void Main()

{

  foreach(int i in Power(2, 8))

  {

    Console.Write("{0}", i);

  }

}

public IEnumerable<Galaxy> NextGalaxy

{

  get

  {

    yield return new Galaxy { Name = "Tadpole", MegaLightYears = 400 };

    yield return new Galaxy { Name = "Pinwheel", MegaLightYears = 25 };

    yield return new Galaxy { "Milky Way", MegaLightYears = 0 };

  }

}

2. checked and unchecked

在checked context中,算术越界会抛出一个异常,在unchecked内容中,不会出现异常,结果会被缩短了。

如果代码块中没有指定checked还是unchecked, 它取决于编译选项: /checked,  默认是/checked-(不检查)

3. fixed

它阻止垃圾回收器重新分配可移动变量。它只能用在unsafe的内容当中。

fixed语句块设置一个指针指向可管理的变量,在执行的时候获得那个地址。

Example:

fixed (int *p = &pt.x)

{

  *p = 1;

}

在出了大括号之后,任何固定的变量都被不固定或者被垃圾回收器回收。因而,不要再指向这些变量当出了fixed语句块。

Fixed Sized Buffers :  它可以在数据结构当中,创建一个固定的数组

例:private fixed char name[30];

internal unsafe struct MyBuffer

{

  public fixed char fixedBuffer[128];

}

不安全的缓存只能存在于结构体当中

3. lock

多线程,防止它们同时访问同一资源。

一般地,不要lock一个public 类型或者一个实例不在你的控制之下。

lock(this) 是个问题如果实例可以被公开地访问。

lock(typeof(MyType)) 是个问题如果MyType是可公开访问的

lock("myLock") 是个问题,因为其它处理,只要用到相同的字符串,就会共享同样的lock.

最好是用private的对象加锁,或者private static加锁,对所有的对象而言不可同时访问。

c# 语句关键字的更多相关文章

  1. {MySQL的逻辑查询语句的执行顺序}一 SELECT语句关键字的定义顺序 二 SELECT语句关键字的执行顺序 三 准备表和数据 四 准备SQL逻辑查询测试语句 五 执行顺序分析

    MySQL的逻辑查询语句的执行顺序 阅读目录 一 SELECT语句关键字的定义顺序 二 SELECT语句关键字的执行顺序 三 准备表和数据 四 准备SQL逻辑查询测试语句 五 执行顺序分析 一 SEL ...

  2. 单表:SQL语句关键字的执行顺序

    表和数据: -- 创建表 CREATE TABLE `person` ( `id` ) NOT NULL AUTO_INCREMENT, `name` ) NOT NULL, `age` ) ', ` ...

  3. sqlite sql语句关键字GROUP BY的理解

    第一遍看GROUP BY的介绍时,没看懂. SQLite 的 GROUP BY 子句用于与 SELECT 语句一起使用,来对相同的数据进行分组.在 SELECT 语句中,GROUP BY 子句放在 W ...

  4. select 语句关键字优先级

    1.select 语句优先级 select classid, userid, name, age from study where userid > 15 group by classid ha ...

  5. mysql 中sql语句关键字的书写顺序与执行顺序

    书写顺序: select -> from -> where -> group by -> having -> order by 执行顺序: from -> wher ...

  6. C# 关键字【转】

      C#中的关键字 关键字是对编译器具有特殊意义的预定义保留标识符.它们不能在程序中用作标识符,除非它们有一个 @ 前缀.例如,@if 是有效的标识符,但 if 不是,因为 if 是关键字. 下面是列 ...

  7. (转)经典SQL查询语句大全

    (转)经典SQL查询语句大全 一.基础1.说明:创建数据库CREATE DATABASE database-name2.说明:删除数据库drop database dbname3.说明:备份sql s ...

  8. 详解MySQL---DDL语句、DML语句与DCL语句

    背景:近几年,开源数据库逐渐流行起来.由于具有免费使用.配置简单.稳定性好.性能优良等优点,开源数据库在中低端应用上占据了很大的市场份额,而 MySQL 正是开源数据库中的杰出代表.MySQL 数据库 ...

  9. “锁定”语句 lock(C# 参考)

    此文章由人工翻译. 将光标移到文章的句子上,以查看原文. 更多信息. 译文 原文 "锁定"语句(C# 参考) 其他版本 <?XML:NAMESPACE PREFIX = &q ...

随机推荐

  1. java保留两位小数的方法

    01.import java.math.BigDecimal; 02.import java.text.DecimalFormat; 03.import java.text.NumberFormat; ...

  2. 《asp.net mvc3 高级编程》第一章

    以前项目中用过mvc2,虽然mvc4早已出来,但手头只有mvc3的书籍,索性就学学MVC3吧. asp.net mvc 3 概述 (1)友好的试图表达,其中包括新的Razor视图引擎 (2)支持.NE ...

  3. thinkphp ajax 实例 实现

    thinkPHP后台实现 #删除用户操作      function delete()      {        if(isset($_SERVER["HTTP_X_REQUESTED_W ...

  4. 嵌入式 python之str操作

    1.字符串的对齐方式:①:center(int[,str])>>> string = 'Fishhat'>>> string.center(55)'         ...

  5. java 面试

        115个Java面试题和答案——终极列表(上) 本文我们将要讨论Java面试中的各种不同类型的面试题,它们可以让雇主测试应聘者的Java和通用的面向对象编程的能力.下面的章节分为上下两篇,第一 ...

  6. codevs 4768 跳石头

    传送门 表示去年不会,二分是啥都不知道,一脸懵逼. 今年再做,虽然知道二分是啥了,但依旧不会,蒙蔽了好几天,最后还是看了题解. #include<cstdio> #define M 510 ...

  7. 定时器:为 Windows 实现一个连续更新,高精度的时间供应器

    原著:Johan Nilsson 翻译:lxhui 原文出处:MSDN Magazine March 2004(Timers...) 原代码下载: HighResolutionTimer.exe (4 ...

  8. Android AsynTask更新主界面

    虽然今天礼拜六还在加班,但是在等接口,所以还是有很多时间来自己学点东西的,所以就接着昨天的来.今天继续学的是不通过主线程来更新主线程的界面的问题. 昨天是用的开启线程调用Handler来更新线程,那个 ...

  9. HDOJ(HDU) 1799 循环多少次?(另类杨辉三角)

    Problem Description 我们知道,在编程中,我们时常需要考虑到时间复杂度,特别是对于循环的部分.例如, 如果代码中出现 for(i=1;i<=n;i++) OP ; 那么做了n次 ...

  10. cf590B Chip 'n Dale Rescue Rangers

    B. Chip 'n Dale Rescue Rangers time limit per test 1 second memory limit per test 256 megabytes inpu ...