相关疑难解决方法(0)

为什么Linq Cast <>助手不能使用隐式强制转换操作符?

请在决定投票前重复阅读...

我有一个类型,实现了implicit cast另一种类型的运算符:

class A
{
    private B b;
    public static implicit operator B(A a) { return a.b; }
}
class B
{
}
Run Code Online (Sandbox Code Playgroud)

现在,隐式和显式转换工作正常:

B b = a;
B b2 = (B)a;
Run Code Online (Sandbox Code Playgroud)

......那么Linq怎么.Cast<>没有?

A[] aa = new A[]{...};
var bb = aa.Cast<B>();  //throws InvalidCastException
Run Code Online (Sandbox Code Playgroud)

看一下源代码.Cast<>,没有太大的魔力:如果参数真的是一个特殊情况IEnumerable<B>,那么:

foreach (object obj in source) 
    yield return (T)obj; 
    //            ^^ this looks quite similar to the above B b2 = (B)a;
Run Code Online (Sandbox Code Playgroud)

那么为什么我的显式演员会工作,而不是里面的演员.Cast<>? …

c# linq casting coercion implicit-conversion

15
推荐指数
2
解决办法
3886
查看次数

为什么只有AVX的处理器比许多SIMD算法优于AVX2处理器?

我一直在研究SIMD算法在C#和C++中的优势,发现在很多情况下,在AVX处理器上使用128位寄存器比在AVX2处理器上使用256位寄存器提供了更好的改进,但我不知道明白为什么.

通过改进,我的意思是SIMD算法相对于同一台机器上的非SIMD算法的加速.

c# c++ simd avx avx2

5
推荐指数
2
解决办法
1888
查看次数

如何获取值的二进制表示

可能重复:
c#中的十进制到二进制转换

我有3号,432号,1号等号码.我需要将这些数字转换为零和1的集合,然后将这些位存储在整数数组中,但不确定如何获得任何整数的位表示.

c#

3
推荐指数
2
解决办法
2万
查看次数

获取表示c#中int的位数组

有没有办法在c#中显示int的表示形式?

1  = 00001
20 = 10100
Run Code Online (Sandbox Code Playgroud)

等等

我尝试过使用BitConverter没有运气.这应该很简单,但我找不到解决方案!

c# bit-manipulation bit

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

从整数初始化 BitArray

我正在尝试从整数值初始化 System.BitArray 实例。但是,看起来我没有得到正确的值。

我的代码是

        var b = new BitArray(BitConverter.GetBytes(0xfa2));
        for (int i = 0; i < b.Count; i++)
        {
            char c = b[i] ? '1' : '0';
            Console.Write(c);
        }
        Console.WriteLine();
Run Code Online (Sandbox Code Playgroud)

我也试过没有 BitConverter:

        var b = new BitArray(new int[] { 0xfa2 });
Run Code Online (Sandbox Code Playgroud)

但这些尝试似乎都没有奏效。这些是这里建议的尝试:Convert int to a bit array in .NET

我的输出:01000101111100000000000000000000。预期的输出:111110100010。

任何帮助将不胜感激!

c#

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

标签 统计

c# ×5

avx ×1

avx2 ×1

bit ×1

bit-manipulation ×1

c++ ×1

casting ×1

coercion ×1

implicit-conversion ×1

linq ×1

simd ×1