コードベースに次のファイルがあります。
StandardUnits.Numbers.Double
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace StandardUnits.Numbers
{
public class Double : Number<double>
{
public Double(double value) : base(value) { }
public static implicit operator Double(double value) { return new Double(value); }
public static implicit operator double(Double value) { return value._value; }
}
}
と
StandardUnitsTest.Program
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using StandardUnits;
using StandardUnits.Numbers;
namespace StandardUnitsTest
{
class Program
{
static void Main(string[] args)
{
Equatable<string> str = "Hello! This is my number: ";
Number<float> n = 4;
Double o = 5.5;
Float p = n + o;
Console.WriteLine(str + p.ToString());
Console.Read();
}
}
}
何らかの理由で、「Double」を使用すると、次のエラーが発生します。
Error 1 'Double' is an ambiguous reference between 'double' and 'StandardUnits.Numbers.Double' 16 13
ただし、「Double」と同じ方法で作成された「Float」では、このようなエラーは発生しません(ただし、明らかに「double」ではなく「float」を使用します)。コンパイラがとを区別できるのに、とを区別できStandardUnits.Numbers.Float
ないのfloat
はなぜですか?大文字と小文字の区別がこれを妨げないのはなぜですか?StandardUnits.Numbers.Double
double
必要に応じて、NumberとFloatのコードスニペットも提供できます。