我正在尝试为无限大小的整数值开发一个类,我只需要创建一个与分配运算符一起使用的新自定义常量后缀。
例如:
让我们假设类名是 BigInt 并且创建的后缀是 B
分配语句将是这样的
// B character will tell the compiler about the New Data Type
BigInt x = 111111111111111111111111111111111111111111111111B;
有没有办法做到这一点?
特别的问候
不,目前在 C# 中没有任何方法可以做到这一点。
解决方法:您可以查看Nemerle,它是一种基于 C# 语法的非常灵活、元编程友好的语言。
不,语言/编译器不支持这个。您可能想要研究的接近的东西是隐式转换运算符。这会让你做这样的事情:
BigInt b = "1234";
public class BigInt
{
public static implicit operator BigInt(string value)
{
return new BigInt {Value = value};
}
public string Value { get; private set; }
}
无法以您描述的方式直接扩展语言。
您可以编写类似于 C# 并接受这样的说明符的 .NET 语言,但与您正在尝试做的事情完全不同。
注意:存在任意大小的整数的现有结构BigInteger
- 无需重新发明轮子。
微软已经这样做了。它被称为 BigInteger。认为它是随 .NET 4.0 推出的?
这是 MSDN 链接:http: //msdn.microsoft.com/en-us/library/system.numerics.biginteger.aspx
至于像那样扩展它,我认为这在 C# 中是不可能的。您必须重载赋值运算符,据我所知,这仅在 C++ 中可行。
我不完全确定,但你可以看看 Roslyn。查看http://kevinmontrose.com/2012/06/10/extending-type-inferencing -in-c/了解更多信息。