4

無制限のサイズの整数値のクラスを開発しようとしています。必要なのは、割り当て演算子で使用される新しいカスタム定数サフィックスを作成することだけです。

例えば:

クラス名が BigInt で、作成されるサフィックスが B であると仮定します。

assignステートメントは次のようになります

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

これを達成する方法はありますか?

特別なよろしく

4

5 に答える 5

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 に答える
6

いいえ、現時点では C# でこれを行う方法はありません。

回避策: C# 構文に基づいた、非常に柔軟でメタプログラミングに適した言語であるNemerleを調べることができます。

于 2012-06-29T20:02:22.900 に答える
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 に答える