在对象实例上找不到方法
本文关键字:找不到 方法 实例 对象 | 更新日期: 2023-09-27 17:59:50
我有一个名为Reservations
的对象。在Reservations
内部,还有一个名为Reservation
的对象,它是一个数组。
当我做以下事情时:
reservations.Reservation[i] = new Reservation(); //reservations if of type Reservations
我得到以下错误:
在对象实例上找不到方法
我注意到的几件事是,当我到达这一点时,它会抛出IndexOutOfRangeError,如果我将鼠标悬停在保留变量上,它会显示一个数字。
VB代码
Public Class Reservations
{
Private RerservationField() as Reservation
Public Property Reservation() as Reservation()
Get
Return Me.ReservationField
End Get
Set
Me.ReservationId = value
End Set
End Property
}
Dim reservations As New Reservations()
ReDim reservations.Reservation(0)
Dim i as Integer = 0
reservations.Reservation(i) = New Reservation()
C#代码
public class Reservations
{
Reservation[] reservation {get;set;}
}
Reservations reservations = new Reservations();
reservations.Reservation = new Reservation[0];
int i = 0;
VB代码和C#代码,它是基于xml请求实例化数组的长度。所以在vb代码中,它是这样做的:
ReDim reservations.Reservation(rq.Reservations.Reservation.Length - 1)
在c#代码中,它是这样做的:
reservations.Reservation(rq.Reservations.Reservation.Length - 1).
以上是我的问题。我需要做:
reservations.Reservation(rq.Reservations.Reservation.Length)
rq是请求。
您的线路:
reservations.Reservation = new Reservation[0];
将创建一个最大长度为0的数组吗?它基本上是非空的,但为空。。
您需要实例化保留。保留数组(SIZE
将是您想要的大小)。你不需要从你的长度中减去-1。如果指定新的数组[1],它将能够容纳1个元素、2个元素等。
Reservations reservations = new Reservations();
size = rq.Reservations.Reservation.Length
reservations.Reservation = new Reservation[size ];
reservations.Reservation[0] = new Reservation();
如果你愿意,你可以在构造函数中完成:
public class Reservations
{
Reservation[] reservation {get;set;}
public Reservations(int size){
reservation = new Reservation[size];
}
}
则不再需要中间步骤,即:
Reservations reservations = new Reservations(rq.Reservations.Reservation);
reservations.Reservation[0] = new Reservation();
注意,您应该考虑使用更高级的集合列表
public class Reservations
{
List<Reservation> reservation {get;set;}
public Reservations(){
reservation = new List<Reservation>();
}
}
如果你需要它作为一个阵列,你可以做
reservation.Reservations.ToArray();
插入它将是
reservation.Reservations.Add(theReservation);
使用动态数组(List<T>):
var reservation = new List<Reservation>();
reservation.Add(new Reservation());
数组有一个固定的长度,如果您试图向超过该长度的位置添加一些内容,当然会导致IndexOutOfRangeException。
IndexOutOfRangeException
的原因很可能是因为reservations.Reservation[i]
数组包含的元素比i
少。检查reservations.Reservation.Count()
。
也有同样的问题。通过进入我的"解决方案属性"修复了该问题。在"公用属性"下,有"调试源文件"。在"不要查找这些源文件"部分,我有一个调试所需的文件。已删除所有条目。。。动臂固定。
希望它能有所帮助!我在调试问题上浪费了相当多的时间。