主要參考的是C# Language Specification Version
引子
C#是
不安全上下文
不安全代碼只能寫在不安全上下文中
通過unsafe 修飾符可以修飾
class
field
unsafe
指針的類型
在不安全上下文中
Type t = typeof(Int
指針類型是用非托管類型或是void加上*來表示的
pointer
unmanaged
void *
unmanaged
type
在*前面的指針類型被稱為指針類型的引用類型
非托管類型不是引用類型
非托管類型就是下面的一種
例子
Example
Description
byte*
Pointer to byte
char*
Pointer to char
int**
Pointer to pointer to int
int*[]
Single
和C/C++不同的是
int *p
但是在C#中
和引用類型相同的是
Void* 表示一個指針指向未知類型
指針類型是一個單獨的類型
指針類型不能用於類型參數
指針類型還可用於易變字段類型
雖然指針還能通過ref和out來傳遞
using System;
class Test
{
static int value =
unsafe static void F(out int* pi
int i =
pi
fixed (int* pj = &value) {
//
pi
}
}
static void Main() {
int i =
unsafe {
int* px
int* px
F(out px
Console
*px
}
}
}
方法可以返回指針類型
unsafe static int* Find(int* pi
for (int i =
if (*pi == value)
return pi;
++pi;
}
return null;
}
主要有幾個操作符
· *被用作間接訪問
·
· []用來做指針的索引器
· &用來獲得變量的地址
· ++和—用來自增和自減指針
· +和
· ==
· stackalloc可以從棧上分配內存
· fixed用來臨時固定一個變量
From:http://tw.wingwit.com/Article/program/net/201311/11442.html