相关疑难解决方法(0)

我应该使用int还是Int32

在C#中,int并且Int32是同样的事情,但我读了许多那个时代int优于Int32没有给出理由.有原因,我应该关心吗?

c# variable-types

345
推荐指数
12
解决办法
18万
查看次数

什么时候System.Double不是双倍的?

在看到double.Nan == double.NaNC#中总是如此虚假之后,我开始好奇如何在引擎盖下实现平等.所以我使用Resharper来反编译Double结构,这是我发现的:

public struct Double : IComparable, IFormattable, IConvertible, IComparable<double>, IEquatable<double>
{
    // stuff removed...

    public const double NaN = double.NaN;

    // more stuff removed...
}
Run Code Online (Sandbox Code Playgroud)

这似乎表明结构Double声明了一个用这个特殊的小写字母定义的常量double,尽管我一直认为这两个是完全同义的.更重要的是,如果我使用小写双精度执行实现,Resharper只需将我滚动到文件顶部的声明.同样地,跳转到小写的实现NaN只是让我在前面的行中进行常量声明!

所以我试图理解这个看似递归的定义.这只是反编译器的人工制品吗?可能是Resharper的限制?或者这个小写的双重实际上是一个完全不同的野兽 - 代表CLR/CTS较低级别的东西?

NaN真的来自哪里?

c# clr

13
推荐指数
2
解决办法
445
查看次数

关于C#中的原始数据类型

这篇MSDN文章涉及数据类型.

它说:

对于Java中的每个原始数据类型,核心类库提供了一个包装类,将其表示为Java对象.例如,Int32类包装int数据类型,Double类包装double数据类型.

另一方面,C#中的所有原始数据类型都是System命名空间中的对象.对于每种数据类型,都提供了短名称或别名.例如,int是System.Int32的短名称,double是System.Double的缩写形式.

我跑到Mono代码来读取System.Int32结构的实现.

我发现了几行强迫我提出这个问题:

public const int MaxValue = 0x7fffffff;
public const int MinValue = -2147483648;

// This field is looked up by name in the runtime
internal int m_value;
Run Code Online (Sandbox Code Playgroud)

我假设MS将以相同的方式实现结构.这与包装器有什么不同吗?文件试图传达的究竟是什么?

如果MSDN被认为是System.Int32结构将无限递归,至少对我来说非常困惑.

c#

11
推荐指数
2
解决办法
3057
查看次数

为什么`Int32`在其源代码中使用`int`?

为什么在源代码Int32使用?在C#中不相等?那么原始的源代码是什么?我糊涂了..intInt32intint

[Serializable]
[System.Runtime.InteropServices.StructLayout(LayoutKind.Sequential)] 
[System.Runtime.InteropServices.ComVisible(true)]
#if GENERICS_WORK
    public struct Int32 : IComparable, IFormattable, IConvertible
        , IComparable<Int32>, IEquatable<Int32>
///     , IArithmetic<Int32>
#else
    public struct Int32 : IComparable, IFormattable, IConvertible
#endif
    {
        internal int m_value; // Here????

        public const int MaxValue = 0x7fffffff;
        public const int MinValue = unchecked((int)0x80000000);

        ...
    }
Run Code Online (Sandbox Code Playgroud)

之间存在相同的问题Booleanbool太多.

c# int32 reference-source

7
推荐指数
1
解决办法
900
查看次数

C#Int32:m_value

在读了一下Int32C#中的结构后,我意识到int并且Int32是同义词.在struct 的源代码中Int32,有一个internal int m_value字段.

如果我的知识是正确的,我们分配给int变量的值存储在m_value(我是否正确?).但我怀疑的是,m_value当我们给出时,价值是如何存储的int i = 7;.

我没有在Int32struct源代码中看到任何隐式运算符,因此可以存储该值m_value.

谁能帮我这个?

c#

4
推荐指数
1
解决办法
698
查看次数

int vs Int32.它们真的是别名吗?

在查看Int32的源代码,同时做了一些研究,为什么我的DataContractSerializer不会序列化我的结构但是当使用int它工作正常时,我遇到了一些奇怪的代码

public struct Int32 : ...
{
   internal int m_value;

   public const int MaxValue = 0x7fffffff;
Run Code Online (Sandbox Code Playgroud)

如果Int32和int是别名,为什么在Int32内部声明int?

.net c# value-type

3
推荐指数
1
解决办法
462
查看次数

const声明如何设置为自己的工作

这是Double中的PositiveInfinity声明.

/// <summary>
/// Represents positive infinity. This field is constant.
/// </summary>
/// <filterpriority>1</filterpriority>
public const double PositiveInfinity = double.PositiveInfinity;
Run Code Online (Sandbox Code Playgroud)

看起来像一个不会通过编译器的循环...为什么它以这种方式声明?这是如何工作的?

c# double const

2
推荐指数
1
解决办法
200
查看次数

标签 统计

c# ×7

.net ×1

clr ×1

const ×1

double ×1

int32 ×1

reference-source ×1

value-type ×1

variable-types ×1