为什么编译器错误CS0116高于一切?

时间:2011-04-26 11:34:22

标签: c#

我在代码中得到Compiler Error CS0116

<%@ Page EnableEventValidation="false" ValidateRequest="false" Language="C#" AutoEventWireup="true"

CodeFile="../Default.aspx.cs" Inherits="x.Program" %>

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajaxToolkit" %>

<%@ Register Assembly="Validators" Namespace="Sample.Web.UI.Compatibility" TagPrefix="cc1" %>

<%@ Import Namespace="System.IO" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title>Title</title>
<link href="StyleSheet.css" rel="stylesheet" type="text/css" />
</head>
<body class="mainbody"></body>
</html>

Default.aspx.cs中的脚本代码(请注意,忽略“忽略此随机文本”并且不会生成语法错误):

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

//this random text somehow ignored (now commented)

namespace x
{
// To fix the error, you must
// enclose a method in a class:

 class Program // changed from Class Program
 {
 void Method2(string str)
  {
  Console.WriteLine(str)
  }
 }
}

为什么出现编译器错误CS0116?为什么忽略其他事情(例如语法错误)?更新:请注意,如果我删除“此随机文本以某种方式忽略”行错误仍然存​​在。

最终更新: 解决方案是 显然,应该删除额外的行。 2.工具 - &gt;选项 - &gt;文本编辑器 - &gt;基本 - &gt; VB特定 - &gt;代码的漂亮列表(重新格式化)已启用并导致自动更改案例(“类”到“类”)。我没有立刻注意到它。 非常感谢你。它现在充当魅力。 @Rob Levine和@Guffa我只能接受一个答案,但你们两个都做得很好!

2 个答案:

答案 0 :(得分:3)

Class更改为class

  

C#具有案例意义。

由于编译器无法识别Class,所以 该方法仍然不在类中,您仍然会得到相同的错误。

答案 1 :(得分:2)

错误CS0116正好因为您的行

而出现
this random text somehow ignored

此错误消息似乎告诉您诸如字段,方法,属性等成员不能直接出现在命名空间内 - 它们需要包含在类或结构中。 [正如Marc在评论中指出的那样 - 即使这一行显示在命名空间声明之上,它仍然被认为是直接位于全局命名空间内]

换句话说 - 因为它看到了这个编译问题,它并不打算尝试进一步了解你在类文件中可能有什么,并且没有给你任何语法错误类型的消息 - 它真的说“这个文件是完全错误的,我甚至都不会去尝试理解它。”