小编Ale*_*den的帖子

在C#中定义F#'**'运算符

我看到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# f# exponent operator-keyword

6
推荐指数
2
解决办法
742
查看次数

为什么在增加指针的整数值时会得到一个随机数?

我是一名专业的 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)。这个数字是多少?它是同一进程使用的另一个号码吗?它可能来自不同的过程吗?这是不好的做法,还是不允许的?如果没有,这有什么用吗?这有点酷。

c++ int pointers memory-address

0
推荐指数
1
解决办法
285
查看次数

标签 统计

c# ×1

c++ ×1

exponent ×1

f# ×1

int ×1

memory-address ×1

operator-keyword ×1

pointers ×1