在C#中创建自定义常量后缀

时间:2012-06-29 20:00:48

标签: c# .net

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

例如:

假设类名是BigInt,而后缀创建的是B

assign语句将是这样的

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

有没有办法实现这个目标?

特别问候

5 个答案:

答案 0 :(得分:6)

不,目前在C#中没有办法做到这一点。

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

答案 1 :(得分:5)

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

可以编写一个类似C#的.NET语言,并接受这样的说明符,但没有什么比你想做的更好。

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

答案 2 :(得分:5)

没有。语言/编译器不支持此功能。您可能希望查看的内容是隐式conversion operator。那会让你做这样的事情:

BigInt b = "1234";

public class BigInt
{
    public static implicit operator BigInt(string value)
    {
        return new BigInt {Value = value};
    }
    public string Value { get; private set; }
}

答案 3 :(得分:1)

微软已经这样做了。它被称为BigInteger。想想它是用.NET 4.0发布的吗?

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

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

答案 4 :(得分:0)

我不完全确定,但你可以看看罗斯林。查看http://kevinmontrose.com/2012/06/10/extending-type-inferencing-in-c/了解详情。