根据MSDN(http://msdn.microsoft.com/zh-cn/library/75dwhxf7%28v=vs.80%29.aspx),blittable是:这里的关键就是“不需要特殊处理”,即托管内存中的数据,可以直接让非托管方使用(反之亦然)。
Interop在进行封送时候,对bittable可以不进行拷贝,而是直接内存锚定(见上一行)。
因此是否可以直接内存锚定可以用来判断是否blittable:static bool IsBlittable(object obj)
{
    try
    {
        GCHandle handle = GCHandle.Alloc(obj, GCHandleType.Pinned);  //<--
        handle.Free();
        return true;
    }
    catch { }
    return false;
}static void Main(string[] args)
{
    bool b1 = IsBlittable((byte)0);    // true
    bool b2 = IsBlittable(true);       // false
    bool b3 = IsBlittable(0);          // true
    bool b4 = IsBlittable((char)0);    // false
    bool b5 = IsBlittable(new int[3]); // true
}