日期:2014-05-20  浏览次数:21031 次

如何获得一个class类型类量的指针
貌似传统方法,只能到取结构类型的:
http://topic.csdn.net/u/20090825/16/725bc96a-33f9-4c63-85ef-01d22d6c1ed2_3.html
说明见:292楼~~

C# code
using System;
namespace ConsoleApplication9
{
    public struct BofStruct { }
    public class BofClass { }
    class Program
    {
        unsafe static void Main(string[] args)
        {
            //--准备
            BofStruct bs = new BofStruct();
            BofClass bc = new BofClass();

            //--测试
            //Console.WriteLine("BofStruct'sizeof:{0}", sizeof(BofClass));
            //无法获取托管类型(“BofClass”)的地址和大小,或无法声明指向它的指针
            Console.WriteLine("BofStruct'sizeof:{0}", sizeof(BofStruct));
            //BofStruct'sizeof:4
            //Console.WriteLine("bc'pointer:{0:X8}", (uint)&bc);
            //无法获取托管类型(“BofClass”)的地址和大小,或无法声明指向它的指针
            Console.WriteLine("bc'pointer:{0:x8}", (uint)&bs);
            //bc'pointer:057fecd0

            //--使用
            int num;
            int* p;
            p = #
            *p = 999;
            System.Console.WriteLine("p:{0}", *p);
            System.Console.WriteLine("p:{0}", p->ToString());

            Console.ReadKey();
        }
    }
}


也许也有别的方法吧~~

------解决方案--------------------
进来学习~~学习
------解决方案--------------------
好像不能去的吧
------解决方案--------------------
up
------解决方案--------------------
class类的指针==引用啊>???

为什么要绕圈子呢?
------解决方案--------------------
路过
------解决方案--------------------
C#里得到对象地址有什么意义?
------解决方案--------------------
指针类型中,在 * 前面指定的类型称为该指针类型的目标类型 (referent type)。它表示该指针类型的值所指向的变量的类型。
与引用(引用类型的值)不同,指针不受垃圾回收器跟踪(垃圾回收器并不知晓指针和它们指向的数据)。出于此原因,不允许指针指向引用或者包含引用的结构,并且指针的目标类型必须是 unmanaged-type。
unmanaged-type 是任何不是 reference-type 并且在任何嵌套级别都不包含 reference-type 字段的类型。换句话说,unmanaged-type 是下列类型之一:
? sbyte、byte、short、ushort、int、uint、long、ulong、char、float、double、decimal 或 bool。
? 任何 enum-type。
? 任何 pointer-type。
? 任何由用户定义的只包含 unmanaged-types 字段的 struct-type。
将指针和引用进行混合使用时的基本规则是;引用(对象)的目标可以包含指针,但指针的目标不能包含引用。


------解决方案--------------------
好象没了吧。
C++多。
------解决方案--------------------
探讨
@健健

不一定要把引用类型转成指针类型,

有没有办法,获得引用类型的地址.

哪怕是一些非常规的办法,

比如直接从内存中找,

或者过外部程序(比如用C++)

或者能够得知一连串引用类型地址的先后顺序也行.

GC方法有没有办法,我还没有研究过.

总之,办法肯定是有的,不限定在C#中(但必须是C#的程序集.)

------解决方案--------------------
类对象是可以移动的,所以不能获取其地址

如果你非要获取,可以参考这个方法:
fixed类中的第一字段,然后取得该字段的地址

但是我想这个类的内存布局不能是Auto,只能是按顺序或显式布局吧
------解决方案--------------------
关注
------解决方案--------------------
用委託~~delegate~~
------解决方案--------------------
我的印象中,似乎无法获得托管类型的指针。
------解决方案--------------------
up
------解决方案--------------------