2011-04-26 198 views
0

我在代碼中得到Compiler Error CS0116:在Default.aspx.cs爲什麼編譯器錯誤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> 

腳本代碼(請注意,「在某種程度上忽略了這個隨機文本」將被忽略,並且不生成語法錯誤):

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?爲什麼其他的東西被忽略(如語法錯誤)?更新:請注意,如果我刪除「此隨機文本以某種方式被忽略」,線路錯誤仍然存​​在。

最終更新: 解決方案是 1.顯然,應刪除多餘的行。 2.工具 - >選項 - >文本編輯器 - >基本 - > VB特定 - >漂亮列表(重新格式化)的代碼已打開並導致案件(「班級」自動更改爲「班級」)。我沒有馬上注意到它。 非常感謝。它現在作爲魅力。 @Rob Levine和@Guffa我只能接受一個答案,但你們都做得很好!

+0

你的問題在幾個地方包含它自己的答案(錯誤消息,評論和間接你的'不知何故被忽略'的評論)。這是一個很糟糕的問題,並且首先省略了編譯器錯誤信息 – sehe 2011-04-26 11:47:51

+0

請注意如果我刪除「這個隨機文本以某種方式忽略」,行錯誤仍然存​​在。不行,我會重複一遍:那條線並不重要。如果你願意,可以忽略它。該行被有意添加以強調語法錯誤被忽略的事實。總而言之,我的問題並不包含它自己的答案。所以這是一個合理的問題。 – 2011-04-26 12:05:35

+0

根據您對現有答案的意見,您上面張貼的代碼不再是最新的。確保你應用了這兩個建議,然後用更新的代碼編輯你的問題,假設錯誤仍然存​​在。 – 2011-04-26 12:10:14

回答

2

錯誤CS0116正是出現,因爲你行

this random text somehow ignored 

出現此錯誤消息要告訴你,成員如字段,方法,屬性等,不能直接出現在命名空間中 - 他們需要封閉在類或結構中。 [正如馬克指出,在評論 - 儘管這條線出現在命名空間聲明之上,它仍然被認爲直接是全球命名空間裏]

換句話說 - 因爲它看到這個編譯問題,這不是懶得試圖對類文件中的內容做進一步的瞭解,並且不會給你任何語法錯誤類型的消息 - 它確實在說「這個文件是完全錯誤的,我甚至不會去嘗試並理解它。「

+1

值得注意的是(對於OP)這是在根/全局名稱空間中 - 但仍然適用相同的規則。它仍然是一個命名空間。 – 2011-04-26 11:40:40

+0

感謝您的及時回覆。如果我刪除「這個隨機文本以某種方式忽略」行錯誤仍然存​​在。所以問題不在那裏。 – 2011-04-26 11:53:20

+0

這是因爲你*還*有問題Guffa在他的答案中指出 - 你需要將「Class」的大小寫更改爲「class」。就編譯器而言,這些都是相同的問題:看起來像某種類型聲明的無法識別的東西,它直接在名稱空間中,而不在類中(或結構) – 2011-04-26 12:06:32

3

變更Class變爲class

C#是有案例感的。

由於編譯器無法識別Class
方法還在不在一個班,你仍然得到同樣的錯誤。

+1

我不確定這是「推力「這個問題...... – 2011-04-26 11:41:40

+1

@Marc Gravell:由於該類被添加到解決該特定錯誤,我認爲它實際上是拼寫是主要問題。 – Guffa 2011-04-26 11:46:56

+0

將「Class」更改爲「class」,仍然是相同的錯誤。 – 2011-04-26 11:55:28