我正在做 flare-on 挑战 (Memecat Battlestation),我决定..绕过它,Demo Shareware 一个被绕过,但是损坏的标志所以我想我会尝试完整版,我试过了完整版,但我遇到了错误
这是第一个名为 Memecat Battlestation 的 Flare-On 挑战,我运行的是 Windows 7 64 位,错误在 VictoryForm.cs 中
private static IEnumerable<byte> AssignFelineDesignation(byte[] cat, IEnumerable<byte> data)
{
byte[] s = BattleCatManagerInstance.InvertCosmicConstants(cat);
int i = 0;
int j = 0;
return data.Select(delegate (byte b)
{
i = (i + 1 & 255);
j = (j + (int)s[i] & 255);
BattleCatManagerInstance.CatFact(s, i, j);
return b ^ s[(int)(s[i] + s[j] & byte.MaxValue)];
});
}
我原以为它会在没有任何错误的情况下构建,但我收到了这个错误:
'Cannot implicitly convert type '
System.Collections.Generic.IEnumerable<int>
' to 'System.Collections.Generic.IEnumerable<byte>
'. An explicit conversion exists (are you missing a cast?)'
最佳答案
这一行:
return b ^ s[(int)(s[i] + s[j] & byte.MaxValue)]
... 返回一个 int
,因为这是您正在使用的 ^
运算符的类型。您可以将结果转换为 byte
:
return (byte) (b ^ s[(int)(s[i] + s[j] & byte.MaxValue)]);
不过,我个人会使用 lambda 表达式而不是匿名方法:
return data.Select(b =>
{
i = (i + 1 & 255);
j = (j + (int)s[i] & 255);
BattleCatManagerInstance.CatFact(s, i, j);
return (byte) (b ^ s[(int)(s[i] + s[j] & byte.MaxValue)]);
});
关于c# - 如何修复 C# 中的 'Cannot implicitly convert type' 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57555612/