4

我正在尝试为无限大小的整数值开发一个类,我只需要创建一个与分配运算符一起使用的新自定义常量后缀。

例如:

让我们假设类名是 BigInt 并且创建的后缀是 B

分配语句将是这样的

// B character will tell the compiler about the New Data Type
BigInt x = 111111111111111111111111111111111111111111111111B; 

有没有办法做到这一点?

特别的问候

4

5 回答 5

6

不,目前在 C# 中没有任何方法可以做到这一点。

解决方法:您可以查看Nemerle,它是一种基于 C# 语法的非常灵活、元编程友好的语言。

于 2012-06-29T20:02:22.900 回答
6

不,语言/编译器不支持这个。您可能想要研究的接近的东西是隐式转换运算符。这会让你做这样的事情:

BigInt b = "1234";

public class BigInt
{
    public static implicit operator BigInt(string value)
    {
        return new BigInt {Value = value};
    }
    public string Value { get; private set; }
}
于 2012-06-29T20:09:21.170 回答
5

无法以您描述的方式直接扩展语言。

可以编写类似于 C# 并接受这样的说明符的 .NET 语言,但与您正在尝试做的事情完全不同。

注意:存在任意大小的整数的现有结构BigInteger- 无需重新发明轮子。

于 2012-06-29T20:04:11.147 回答
1

微软已经这样做了。它被称为 BigInteger。认为它是随 .NET 4.0 推出的?

这是 MSDN 链接:http: //msdn.microsoft.com/en-us/library/system.numerics.biginteger.aspx

至于像那样扩展它,我认为这在 C# 中是不可能的。您必须重载赋值运算符,据我所知,这仅在 C++ 中可行。

于 2012-06-29T20:05:03.020 回答
0

我不完全确定,但你可以看看 Roslyn。查看http://kevinmontrose.com/2012/06/10/extending-type-in​​ferencing -in-c/了解更多信息。

于 2012-06-29T20:09:12.367 回答