簡體   English   中英

C# - 'Double'是一個模棱兩可的參考

[英]C# - 'Double' is an ambiguous reference

我的代碼庫中有以下文件:

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

但是沒有為“Float”產生這樣的錯誤,它以與“Double”相同的方式產生(但顯然是“float”而不是“double”)。 為什么編譯器能夠區分StandardUnits.Numbers.Floatfloat ,但不能區分StandardUnits.Numbers.Doubledouble 為什么區分大小寫不會阻止這種情況

如果需要,我也可以為Number和Float提供代碼片段。

System.Double存在沖突。

沒有System.Float( floatSystem.Single表示),因此沒有沖突。

double的CLR類型是System.Double 這是模棱兩可的。

float的CLR類型是System.Single 這與你的Float類型並不含糊......盡管它確實建議你的類型應該命名為Single ,以便與框架保持一致。 理想情況下,更改名稱,以便它們System命名空間中的類型沖突,但是......假設您確實需要這些類型。 (他們添加了哪些好處?)

這與C#中的floatdouble別名沒有任何關系,而且區分大小寫。 這些只是System.SingleSystem.Double硬連線別名,永遠不會有歧義。 這是你對Double的使用,這是不明確的。

System.Double已經存在(它內置於語言中。)我很好奇你為什么要創建自己的版本。

http://msdn.microsoft.com/en-us/library/system.double.aspx

這是因為有一個System.Double類型(它的別名是double )但沒有System.Float :它叫做System.Single - 它的別名是float

System命名空間中已經有一個Double類( double是它的別名),所以如果你使用Double ,編譯器就不知道你的意思。

但是, floatSystem.Single的別名。 沒有System.Float ,所以沒有沖突。

請參閱“內置類型”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM