私はC#でプロジェクトを始めました。オブジェクト(CLA
というクラス)があります。 CLAはセット(リスト)を作成します。ArgumentOutOfRangeException
List<Cla>
で機能し、HighValue
,LowValue
などが必要です。しかしArgumentOutOfRangeException
はここに入っています。
コンストラクタでメソッドを呼び出すことはできますか?このコードは正しいですか?あなたの問題である
class Program
{
static void Main(string[] args)
{
List<Cla> ClaList = new List<Cla>();
ClaList.Add(new Cla("a", 10.3, "Priznak1", 1));
ClaList.Add(new Cla("b", 3.3, "Priznak1", 1));
ClaList.Add(new Cla("c", 7.3, "Priznak1", 1));
ClaList.Add(new Cla("d", 9.3, "Priznak1", 1));
ClaList.Add(new Cla("e", 8.3, "Priznak1", 1));
CritListSmall NewTest = new CritListSmall(ClaList);
Console.WriteLine("ddd {0}", NewTest.HighValue);
}
}
class CritListSmall
{
public double HighValue;
public double LowValue;
public CritListSmall(List<Cla> p)
{
HighValue = p[0].ObjectValue;
LowValue = p[0].ObjectValue;
int NumberElements;
NumberElements = p.Count;
for (int i = 1; i <= NumberElements; i++)
{
double m = p[i].ObjectValue; //Exception occurs here
if (HighValue < m)
HighValue = m;
}
for (int l = 1; l <= NumberElements; l++)
{
double n = p[l].ObjectValue; //and here
if (LowValue > n)
LowValue = n;
}
}
public class Cla
{
public string ObjectName;
public double ObjectValue;
public string PriznakName;
public int ClassNumber;
public Cla(string on, double ov, string pn, int cn)
{
ObjectName = on;
ObjectValue = ov;
PriznakName = pn;
ClassNumber = cn;
}
public double CritValue;
public double ExpValue;
public bool Outlier;
public double AbsoluteValue;
}
}
リストを使用する必要がありますゼロベースです。 – LarsTech
forループは '<= count'まで実行されるべきではありません。これは、インデックス付けが0から始まりcount-1で終了するためです。それを 'だけに変更すれば、あなたのループはうまく動作します –