今天遇到一些一般不常用,但说不定什么情况下就能用到的C#关键字。
转换关键字
explicit 定义强制转换
// Must be defined inside a class called Fahrenheit: public static explicit operator Celsius(Fahrenheit fahr) { return new Celsius((5.0f / 9.0f) * (fahr.degrees - 32)); }
implicit 定义隐性转换
// User-defined conversion from Digit to double public static implicit operator double(Digit d) { return d.val; }
operator 定义重载操作符号
详情MSDN: http://msdn.microsoft.com/zh-cn/library/39bb81c3.aspx
C#使用指针
unsafe 关键字表示不安全上下文,该上下文是任何涉及指针的操作所必需的。
fixed 语句禁止垃圾回收器重定位可移动的变量。 fixed 语句只在不安全的上下文中是允许的。 Fixed 还可用于创建固定大小缓冲区。
// The unsafe keyword allows pointers to be used within // the following method: static unsafe void Copy(byte[] src, int srcIndex, byte[] dst, int dstIndex, int count) { if (src == null || srcIndex < 0 || dst == null || dstIndex < 0 || count < 0) { throw new ArgumentException(); } int srcLen = src.Length; int dstLen = dst.Length; if (srcLen - srcIndex < count || dstLen - dstIndex < count) { throw new ArgumentException(); } // The following fixed statement pins the location of // the src and dst objects in memory so that they will // not be moved by garbage collection. fixed (byte* pSrc = src, pDst = dst) { byte* ps = pSrc; byte* pd = pDst; // Loop over the count in blocks of 4 bytes, copying an // integer (4 bytes) at a time: for (int n = 0; n < count / 4; n++) { *((int*)pd) = *((int*)ps); pd += 4; ps += 4; } // Complete the copy by moving any bytes that weren‘t // moved in blocks of 4: for (int n = 0; n < count % 4; n++) { *pd = *ps; pd++; ps++; } } } static void Main(string[] args) { byte[] a = new byte[100]; byte[] b = new byte[100]; for (int i = 0; i < 100; ++i) a[i] = (byte)i; Copy(a, 0, b, 0, 100); Console.WriteLine("The first 10 elements are:"); for (int i = 0; i < 10; ++i) Console.Write(b[i] + " "); Console.WriteLine("\n"); }
详情MSDN:
http://msdn.microsoft.com/zh-cn/library/chfa2zb8.aspx
http://msdn.microsoft.com/zh-cn/library/f58wzh21.aspx
C#关键字explicit、implicit、operator 、unsafe 、fixed,布布扣,bubuko.com
C#关键字explicit、implicit、operator 、unsafe 、fixed
原文:http://www.cnblogs.com/hkflyor/p/3714334.html