有谁能帮我解决C#中关于VB6中的AddressOf操作符的替代方案?AddressOf返回一个长值。怎样才能在C#中获得输出?
发布于 2008-11-11 14:56:25
扩展Harper的回答,是的,这是可以做到的,但在.NET中,这通常是一种代码味。
要在C#中获取变量的地址,可以使用C样式指针(*) /address (&) / dereference (->)语法。为了做到这一点,您必须使用/unsafe编译器开关编译应用程序,因为一旦开始直接处理内存地址,您就会从托管代码的安全网中跳出来。
MSDN的示例讲述了大部分故事:
int number;
int* p = &number;
Console.WriteLine("Value pointed to by p: {0}", p->ToString());这将将number变量的地址分配给指针到an-int p。
这方面有一些收获:
fixed将该变量插入内存中。int* p = &GetSomeInt();这样的构造)通常,我在这个世界上的建议是认真考虑为什么您认为您需要在.NET世界中这样做。.NET的任务之一是保护开发人员不违背这一任务,而这一功能与该任务背道而驰。它存在于那些(罕见的)需要它的场景中;如果您发现自己仅仅因为可以使用它而轻率地使用它,那么您可能在错误地使用它并引入代码气味。
如果可能的话,尽量避免,但要知道如何使用,如果你绝对必要的话。
发布于 2008-11-11 14:05:26
C#具有将函数分配给委托/事件的特殊语法。只需使用<delegate> += <function>;
如果你真的想得到其他用途的地址,那你就倒霉了。托管代码的一个特点是这些地址不一定是固定的。虽然大多数功能不太可能发生改变,但在某些情况下,这是可能的。
发布于 2008-11-11 14:06:55
显然,这是可以做到的(虽然我不知道你在哪里需要它)。这是MSDN页面。
https://stackoverflow.com/questions/280953
复制相似问题