我看到F#使用**运算符来表示幂,所以2 ** 5 = 32.这与C#不同,您可以选择在自定义类型中使用"^"运算符,但由于某些原因,内置数字类型不使用它.
但是如何在C#中实现**运算符以用于F#项目?
如果我在C#中这样做:
public static Integer operator ^(Integer left, Integer right)
{
if (Integer.IsNaN(left) || Integer.IsNaN(right)) return NaN;
return left.RaiseToPower(right);
}
Run Code Online (Sandbox Code Playgroud)
它编译得很好,我可以像'+'运算符一样使用它,但这些都不适用于F#:
let intgr3 = intgr1 ** intgr2
let intgr3 = intgr1 ^ intgr2
Run Code Online (Sandbox Code Playgroud)
在C#中,这不起作用:
public static Integer operator **(Integer left, Integer right)
{
if (Integer.IsNaN(left) || Integer.IsNaN(right)) return NaN;
return left.RaiseToPower(right);
}
Run Code Online (Sandbox Code Playgroud)
那么如何**在C#中定义运算符的F#等价物呢?
谢谢.
我是一名专业的 C# 程序员,但我对 C++ 很陌生。我对指针的基本概念很好,但我一直在玩。您可以通过将指针转换为 来获取指针的实际整数值int:
int i = 5;
int* iptr = &i;
int ptrValue = (int)iptr;
Run Code Online (Sandbox Code Playgroud)
这是有道理的;这是一个内存地址。但是我可以移动到下一个指针,并将其转换为int:
int i = 5;
int* iptr = &i;
int ptrValue = (int)iptr;
int* jptr = (int*)((int)iptr + 1);
int j = (int)*iptr;
Run Code Online (Sandbox Code Playgroud)
我得到了一个看似随机的数字(虽然这不是一个好的 PSRG)。这个数字是多少?它是同一进程使用的另一个号码吗?它可能来自不同的过程吗?这是不好的做法,还是不允许的?如果没有,这有什么用吗?这有点酷。