任何人都可以帮我解决C#中有关VB6中AddressOf运算符的替代解决方案吗?AddressOf返回一个long值.我可以用什么方式获得C#中的输出?
Joh*_*udy 11
扩展Harper Shelby的答案,是的,它可以完成,但在.NET中这通常是代码味道.
要在C#中获取变量的地址,可以使用C样式指针(*)/地址(&)/解除引用( - >)语法.为此,您必须使用/ unsafe编译器开关编译应用程序,因为只要您开始直接处理内存地址,就会从托管代码的安全网中弹出.
来自MSDN的样本讲述了大部分故事:
int number;
int* p = &number;
Console.WriteLine("Value pointed to by p: {0}", p->ToString());
Run Code Online (Sandbox Code Playgroud)
这会将number变量的地址分配给指向int的指针p.
对此有一些关注:
fixed来固定RAM中的变量.int* p = &GetSomeInt();)一般来说,我在这个世界上的建议是认真考虑为什么你认为你需要在.NET世界中这样做..NET的任务之一是保护开发人员不要违背金属,这个功能与这个任务背道而驰.它适用于需要它的那些(罕见)场景; 如果你发现自己轻率地使用它只是因为你可以,你可能会误用它并引入代码味道.
尽可能避免使用它,但如果你绝对必须知道如何使用它.
C#具有为委托/事件分配函数的特殊语法.只是用<delegate> += <function>;
如果你真的试图获得其他用途的地址,那你就不走运了.托管代码的一个问题是这些地址不一定是固定的.虽然大多数功能都不可能改变,但在某些情况下这是可能的.
| 归档时间: |
|
| 查看次数: |
21852 次 |
| 最近记录: |