Debug.WriteLine(string,params object [])是一个方法,但是像类型一样使用

时间:2015-04-29 16:39:35

标签: c# winforms debugging

我目前正在开发待办事项列表项目,我正处于开发的结束阶段,但是我输出到调试的语法似乎不正确,我不确定错误是什么,任何帮助将不胜感激。

如上所示,错误为CS0118

  

'System.Diagnostics.Debug.WriteLine(string,params object [])是一个方法,但用作类型'

#define testing
using System;
using System.Collections.Generic;
using System.Diagnostics;

#if(testing)
    public static string[] tempStringArr = new string[5] 
        { "Hey", "Greetings", "Hello", "Hi", "Example" };
    public static string tempKey = "Hello";

    public static int linearSearchTitleTest(string titleKey, string[] titleArr)
    { 
        for (int i = 0; i < titleArr.Length - 1; i++)
        {
            if (titleKey == titleArr[i])
            {
                return i;
            }
        }
        return -1;
    }

    int testResult = linearSearchTitleTest(tempKey, tempStringArr);
    Debug.WriteLine(Convert.ToString(testResult));
#endif

3 个答案:

答案 0 :(得分:1)

您的Debug.WriteLine来电不在函数范围内。尝试将此代码放在函数中,可能在main()中用于测试目的吗?

int testResult = linearSearchTitleTest(tempKey, tempStringArr);
Debug.WriteLine(Convert.ToString(testResult));

例如:

class Program
{
    public static string[] tempStringArr = new string[5] { "Hey", "Greetings", "Hello", "Hi", "Example" };
    public static string tempKey = "Hello";

    static void Main(string[] args)
    {
        int testResult = linearSearchTitleTest(tempKey, tempStringArr);
        Debug.WriteLine(Convert.ToString(testResult));
    }

    public static int linearSearchTitleTest(string titleKey, string[] titleArr)
    {
        for (int i = 0; i < titleArr.Length - 1; i++)
        {
            if (titleKey == titleArr[i])
            {
                return i;
            }
        }
        return -1;
    }
}

答案 1 :(得分:1)

C#是一种客观语言。含义:所有代码必须是对象的一部分。

尝试将代码包装在命名空间,类和方法中。通常这就像

namespace MyApp
{
    class Program
    {
        static void Main(string[] args)
        {
            // your code here ...
        }
    }
}

答案 2 :(得分:0)

实际上,通过使用条件编译,您告诉编译器您要编译代码的哪些部分以及您不希望编译的部分,显然这些部分在最终编译文件中不会以任何形式出现。您可以使用反射器和其他IL预览工具进行检查。

然而,在包含和排除这些部分后,您的代码在编译器视图中的格式应正确,否则编译器无法完成其工作。

换句话说,#if#else#endif不能也不会改变编译器行为,但是在编译发生之前它们会改变代码。