我目前正在开发待办事项列表项目,我正处于开发的结束阶段,但是我输出到调试的语法似乎不正确,我不确定错误是什么,任何帮助将不胜感激。
如上所示,错误为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
答案 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
不能也不会改变编译器行为,但是在编译发生之前它们会改变代码。