C#编译不安全代码中的错误

时间:2010-12-15 07:47:16

标签: c# .net-4.0 compiler-errors unsafe

编译VS 2010 c#项目(.NET 4.0,任何CPU,允许不安全的代码=已检查)我们收到各种编译错误,如下所示:

  1. 运算符'*'不能应用于'System.IntPtr'和'int'类型的操作数

  2. 常量值'325486741'无法转换为'int'(使用'unchecked'语法覆盖)

  3. 无法将'string'类型转换为'char *'

  4. 无法将类型'long'隐式转换为'byte *'。存在显式转换(您是否缺少演员?)

  5. 无效的表达式术语'ref'

  6. 所有这些都发生在'不安全'的方法中。

    如何解决这些问题?

1 个答案:

答案 0 :(得分:2)

我们需要查看您的代码,但我会说“不安全”部分与错误无关,因为那些似乎是铸造等问题。

以下是一些可能有用的信息:

  1. 运算符'*'不能应用于'System.IntPtr'和'int'类型的操作数
  2. 首先尝试转换为int或long。

    1. 常量值'325486741'无法转换为'int'(使用'unchecked'语法覆盖)
    2. 尝试使用unchecked((int)变量)。

      1. 无法将'string'类型转换为'char *'
      2. 尝试使用:

         fixed (char* pChar = my_string) { ... }
        
        1. 无法将类型'long'隐式转换为'byte *'。存在显式转换(您是否错过了演员?)
        2. 尝试转换:byte * pB =(byte *)value;

          1. 表达式词语'ref'
          2. 无效

            如果没有代码,我不能多说这个。