我正在尝试为无限大小的整数值开发一个类,我需要的是 创建一个与assign运算符一起使用的新自定义常量后缀。
例如:
假设类名是BigInt,而后缀创建的是B
assign语句将是这样的
// B character will tell the compiler about the New Data Type
BigInt x = 111111111111111111111111111111111111111111111111B;
有没有办法实现这个目标?
特别问候
答案 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/了解详情。