• c# 语句关键字


    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加锁,对所有的对象而言不可同时访问。

  • 相关阅读:
    正能量
    战略定位
    市场营销
    品牌营销
    CSS3圆角,阴影,透明
    iOS开发的22个奇谲巧技
    [设计模式] javascript 之 策略模式
    让网站和APP更具动感的几点建议
    JAVASCRIPT 之escape 介绍
    CSS2.0中最常用的18条技巧
  • 原文地址:https://www.cnblogs.com/superkklot/p/3703721.html
Copyright © 2020-2023  润新知