我是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