小编Gle*_*den的帖子

C#允许反向引用嵌套类?

这是Microsoft C#编译器中的错误,还是语法服务于我不知道的目的?

class P1
{
    class P2 : P1
    {
        class P3 : P2
        {
            void Foo()
            {
                P3 p3 = this as P2.P3;
                P2 p2 = this as P3.P2;  // ?!?
            }
        };
    };
};
Run Code Online (Sandbox Code Playgroud)

编辑:我应该提一下,它在VS2010中编译得很好.

.net c# nested-class

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

为什么不Marshal.请在我的COM对象上调用Release?

我已阅读文档,Marshal.GetIUnknownForObject并说:

Marshal.Release完成指针后,始终使用减少引用计数.

我写了,我通过.NET中使用COM对象的测试解决方案,我看到与工作时的包装,以我的COM对象既不Marshal.GetIUnknownForObject也不Marshal.Release引起AddRefRelease我的COM对象的方法被调用.

那是怎么回事?

.net c# com interop

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

System.Numerics.Vectors'Vector <T>':它基本上只是System.UInt128吗?

我正在查看版本4.5.0-preview1-26216-02Vector<T>System.Numerics.Vectors命名空间.MSDN文档说:

Vector<T>是一个不可变的结构,表示指定数字类型的单个向量.实例的计数Vector<T>是固定的,但其上限取决于CPU寄存器.
https://docs.microsoft.com/en-us/dotnet/api/system.numerics.vector-1(强调添加)

即使忽略误导的措辞" 计算向量的数量 [sic.] ",这句话似乎还不清楚,因为它暗示不同的Vector<T>实例可能有不同的 - 尽管"固定"到某些CPU限制 - "计数"(再次,究竟是什么'所谓的'计数'?)这里没有提到实际的Count属性 - 或者实际上在介绍页面的任何地方都没有提到.

现在通常情况下,我认为"只读""不可变"在描述实例的属性或字段时比传统上使用"固定",但在这种情况下,事实证明该Vector<T>.Count属性虽然是只读的,但也是静态的,因此与任何Vector<T> 实例无关.相反,它的值仅根据泛型类型参数而变化T(然后可能来自机器到机器,如图所示):

bool hw = Vector.IsHardwareAccelerated;    // --> true

var c = (Vector<sbyte>.Count, Vector<short>.Count, Vector<int>.Count, Vector<long>.Count);
Debug.WriteLine(c);    // -->  (16, 8, 4, 2)
Run Code Online (Sandbox Code Playgroud)

哦.

它基本上System.Int128是伪装的吗?是吗?我的问题是:

  • 我错过了什么吗?这是真的,我知之甚少SIMD,但我认为这个库将允许使用的多少不是仅仅128位的更广泛的硬件加速的数据类型.我的HPSG解析引擎通常执行5,000+位的密集位计算向量.
  • 再假设我没有错过这一点,为什么不把它称为System.Int128/ …

.net bit-manipulation simd hardware-acceleration

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

为什么分配十六进制值会在小端机器上给出大端等效值?

这是一个简单的c语句:

uint32_t x = 0x04000000;
Run Code Online (Sandbox Code Playgroud)

在我的小端机器上,我假设 x 等于 4。但实际上它是 67108864。

所以一定有一些非常基本的东西我不明白。您能帮忙解释一下吗?

c endianness

0
推荐指数
1
解决办法
580
查看次数