我是ASP.NET和C#编程的初学者。我有两个电话和报告。 我想在Default.aspx.cs文件中调用函数LookupNumber(Phone p),并获取数组列表的每个返回值,并在标签控件中显示返回的值。 但我得到这个错误:调用函数时调用返回的数组列表值
Error 1 An object reference is required for the non-static field, method, or property 'PhoneLookup.Models.Phone.LookupNumber(Phone.Models.Phone)' C:\Users\Erik\Desktop\Phone\Phone\Default.aspx.cs 24 26 Phone
Error 2 An object reference is required for the non-static field, method, or property 'PhoneLookup.Models.Phone.LookupNumber(Phone.Models.Phone)' C:\Users\Erik\Desktop\Phone\Phone\Default.aspx.cs 24 26 Phone
Error 3 An object reference is required for the non-static field, method, or property 'PhoneLookup.Models.Phone.LookupNumber(Phone.Models.Phone)' C:\Users\Erik\Desktop\Phone\Phone\Default.aspx.cs 24 26 Phone
这里是我的源代码:
// Report.cs
namespace PhoneLookup.Models
{
public class Report
{
private String _name_surname;
private String _address;
private String _area_code;
private String _exchange;
private String _service_provider;
public Report()
{
_name_surname = String.Empty; _address = String.Empty; _area_code = String.Empty;
_exchange = String.Empty; _service_provider = String.Empty;
}
public String name_surname { get; set; }
public String address { get; set; }
public String area_code { get; set; }
public String exchange { get; set; }
public String service_provider { get; set; }
}
}
// Phone.cs Class
namespace PhoneLookup.Models
{
public class Phone
{
private Int16 _phone_number;
public Phone()
{
_phone_number = -1;
}
public Int16 phone_number { get; set; }
public Report[] LookupNumber(Phone p)
{
List<Report> lst = new List<Report>();
MySqlConnection Conn = new MySqlConnection(constr);
Conn.Open();
MySqlCommand Cmd = new MySqlCommand("SELECT * FROM Reports WHERE phone_number = @pn", Conn);
Cmd.Parameters.AddWithValue("@pn", p.phone_number);
MySqlDataReader Reader = Cmd.ExecuteReader();
while (Reader.Read())
{
lst.Add(new Report()
{
name_surname = Reader["name_surname"]).ToString(),
address = Reader["address"].ToString(),
area_code = Reader["area_code"].ToString(),
exchange = Reader["exchange"].ToString(),
service_provider = Reader["service_provider"].ToString(),
});
}
return lst.ToArray();
}
}
}
// Default.aspx.cs
protected void Button1_Click(object sender, EventArgs e)
{
Phone p = new Phone();
p.phone_number = Convert.ToInt16(q.Text);
// display name surname
Report[] ns = Phone.LookupNumber(p).Select(x => x.name_surname).ToArray();
// display adddress
Report[] ad = Phone.LookupNumber(p).Select(x => x.address).ToArray();
// display service provider
Report[] sp = Phone.LookupNumber(p).Select(x => x.service_provider).ToArray();
Label1.Text = ns.ToString();
Label2.Text = ad.ToString();
Label3.Text = sp.ToString();
}
感谢所有!
看起来你需要'电话'实例而不是它的类型。像'var p = new Phone();'并调用'p.LookupNumber(...)'等。或者像'public static Report [] LookupNumber'一样将这个'LookupNumber'方法改为'static'。 –
@SonerGönül\t 我改变,但我得到这个错误:错误无法隐式转换类型“字符串[]”到“Phone.Models.Report []” – nakib