首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么这段代码会产生“非静态字段、方法或属性编译错误需要对象引用”?

为什么这段代码会产生“非静态字段、方法或属性编译错误需要对象引用”?
EN

Stack Overflow用户
提问于 2014-07-11 02:14:09
回答 2查看 88关注 0票数 0

不知道我哪里出了问题。

我有一个名为EMails的类和一个名为EmailEvent的例程,它是从另一个页面调用的。下面是方法声明:

代码语言:javascript
复制
public void EmailEvent(
                       string evtDate, 
                       string evtName, 
                       string evtContact, 
                       string evtBody, 
                       string lnkMinutes, 
                       string lnkTReports, 
                       String[] textTo)

如您所见,我正在传递一个数组。在调用例程的页面上,我有以下代码:

代码语言:javascript
复制
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[])”需要对象引用。

我尝试过许多参数的变体(只传递数组,传递所有东西,除了对过程进行适当更改的数组)。总是同样的错误。

那我做错什么了?这是我第一次尝试传递数组(可能是1值,可能是12)。

EN

回答 2

Stack Overflow用户

发布于 2014-07-11 02:24:49

问题是,您已经将EmailEvent定义为实例方法:

代码语言:javascript
复制
public void EmailEvent( ... )

您调用它就好像它是一个静态方法:

代码语言:javascript
复制
Emails.EmailEvent( ... );

您的意思是创建或获取类Emails的实例,然后对该实例调用EmailEvent

代码语言:javascript
复制
Emails myEmails = new Emails();
myEmails.EmailEvent( ... );
票数 2
EN

Stack Overflow用户

发布于 2014-07-11 03:58:25

你有两个选择。如果希望在类的每个实例中引发事件,则需要在引发事件之前声明类的实例。

如果希望在整个应用程序域中从类引发单个事件,则需要将事件声明更改为“公共静态空EmailEvent”。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24689155

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档