为什么这段代码会产生'非静态字段、方法或属性需要对象引用'编译错误
本文关键字:方法 字段 属性 错误 编译 对象引用 静态 代码 为什么 段代码 | 更新日期: 2023-09-27 18:12:20
我不知道哪里出错了。
我有一个名为email的类和一个名为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非静态字段需要对象引用,方法,或属性"email"。EmailEvent(字符串,字符串,字符串,字符串,字符串,字符串,字符串[])'
我已经尝试了很多参数的变化(传递数组,传递一切除了数组与适当的变化到过程)。总是同样的错误。
我做错了什么?这是我第一次尝试传递一个数组(可以是一个值,也可以是一打)
问题是您已经将EmailEvent
定义为实例方法:
public void EmailEvent( ... )
你把它当作一个static方法来调用:
Emails.EmailEvent( ... );
您的意思是创建或获取类Emails
的实例,然后在该实例上调用EmailEvent
:
Emails myEmails = new Emails();
myEmails.EmailEvent( ... );
您有两个选择。如果您希望每个类的实例都引发事件,那么您需要在引发事件之前声明一个类的实例。
如果你想在整个应用程序域中从类中引发单个事件,你需要将事件声明更改为"public static void EmailEvent"