我在代码中得到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我只能接受一个答案,但你们两个都做得很好!
答案 0 :(得分:3)
将Class
更改为class
。
C#具有案例意义。
由于编译器无法识别Class
,所以
该方法仍然不在类中,您仍然会得到相同的错误。
答案 1 :(得分:2)
错误CS0116正好因为您的行
而出现this random text somehow ignored
此错误消息似乎告诉您诸如字段,方法,属性等成员不能直接出现在命名空间内 - 它们需要包含在类或结构中。 [正如Marc在评论中指出的那样 - 即使这一行显示在命名空间声明之上,它仍然被认为是直接位于全局命名空间内]
换句话说 - 因为它看到了这个编译问题,它并不打算尝试进一步了解你在类文件中可能有什么,并且没有给你任何语法错误类型的消息 - 它真的说“这个文件是完全错误的,我甚至都不会去尝试理解它。”