[英]“An object reference is required for the non-static field, method, or property” - why?
[英]Why does this code produce an 'An object reference is required for the non-static field, method, or property' compilation error?
不知道我在哪里錯了。
我有一個名為EMails的類和一個名為EmailEvent的例程,該例程是從另一個頁面調用的。 這是方法聲明:
public void EmailEvent(
string evtDate,
string evtName,
string evtContact,
string evtBody,
string lnkMinutes,
string lnkTReports,
String[] textTo)
如您所見,我正在傳遞數組。 在調用例程的頁面上,我有以下代碼:
ArrayList mailIDs = new ArrayList();
switch (ddlSelection.SelectedValue.ToString())
{
case "One":
mailIDs.Add(ddlallMembers.SelectedValue.ToString());
break;
case "Members":
mailIDs.Add(ddlSelection.SelectedValue.ToString());
break;
case "Prospects":
mailIDs.Add(ddlSelection.SelectedValue.ToString());
break;
case "All":
mailIDs.Add(ddlSelection.SelectedValue.ToString());
break;
case "List":
for (int mems = 0; mems < lbChosen.Items.Count; mems++)
{
mailIDs.Add(lbChosen.Items[mems].Value);
}
break;
default:
Response.Write("<script>alert('Invalid Selection. Try again.')</script>");
break;
}
String[] myArr = (String[]) mailIDs.ToArray( typeof( string ) );
Emails.EmailEvent(
tbEventDt.Text,
tbEvent.Text,
tbContact.Text,
tbEventText.Text,
hlMinutes.Target.ToString(),
hlTReport.Target.ToString(),
myArr);
因此,我通過了所有參數,似乎是正確的,但最后一行標記為錯誤,如下所示:
錯誤5非靜態字段,方法或屬性'Emails.EmailEvent(string,string,string,string,string,string,string,string [])'需要對象引用
我嘗試了許多參數變體(傳遞數組,傳遞除數組之外的所有內容,並對過程進行適當的更改)。 總是相同的錯誤。
那我做錯了什么? 這是我第一次嘗試傳遞數組(可能是1個值,可能是12個)。
問題是您已將EmailEvent
定義為實例方法:
public void EmailEvent( ... )
您正在調用它,就像它是一個靜態方法一樣:
Emails.EmailEvent( ... );
您打算創建或獲取類Emails
的實例,然后在該實例上調用EmailEvent
:
Emails myEmails = new Emails();
myEmails.EmailEvent( ... );
您有兩個選擇。 如果希望針對類的每個實例引發事件,則需要先聲明該類的實例,然后才能引發事件。
如果要在整個應用程序域中從類引發單個事件,則需要將事件聲明更改為“ public static void EmailEvent”
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.