簡體   English   中英

為什么此代碼會產生“非靜態字段,方法或屬性需要對象引用”的編譯錯誤?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM