修复c#中反编译程序的错误

本文关键字:错误 反编译程序 修复 | 更新日期: 2023-09-27 18:14:18

当我尝试在Visual Studio中构建程序时,我在第17行得到错误CS1908 (public SpellScore(string Attempt, string[] Target,…)当我在0周围加引号时,我得到同样的错误。我也试过null。关于编译器是如何搞砸的/正确的版本应该是什么?

public class SpellScore
{
    private double MinimumPercent;
    private string mvarAttempt;
    private long mvarAttrib;
    private bool mvarIsCorrect;
    private double mvarResult;
    private SpellingLevels mvarSpellingLevel;
    private string mvarTarget;
    public SpellScore(string Attempt, string[] Target, [Optional, DefaultParameterValue(0)] SpellingLevels Level)
    {
        this.mvarIsCorrect = false;
        int upperBound = Target.GetUpperBound(0);
         for (int i = Target.GetLowerBound(0); i <= upperBound; i++)
        {
            if (this.Correct(Attempt, Target[i], Level))
            {
                this.mvarIsCorrect = true;
            }
        }
    }

修复c#中反编译程序的错误

反编译器已经向您展示了当方法具有可选参数时包含的编译器生成的属性。对于按原样编译的代码,您需要确保引用了声明这些属性的程序集,并包含一个using指令以将它们的名称空间纳入范围。

但实际上,你应该编辑反编译代码,使其看起来像普通的c#代码,像这样:
public SpellScore(string Attempt,
    string[] Target, SpellingLevels Level = (SpellingLevels)0)

根据您所展示的代码,SpellingLevels似乎是enum类型。如果没有一个好的最小化、完整和可验证的代码示例,我们是不可能知道的。

甚至更好,假设它是enum类型,找出SpellingLevels0值是什么,并使用命名值而不是(SpellingLevels)0