私はC#とプログラミングの分野で非常に新しいです。私は書籍やYouTubeのビデオでいくつかのエクササイズを行っていて、これらのコンセプトの多くに頭を抱えています。オブジェクトクラスのプロパティであるコンストラクタへのパラメータの受け渡し
現在、私はこの問題についていません。私は委託ショップの小規模なアプリケーションを持っており、ハードコードされたサンプルデータを削除し、プログラムがテキストファイルからデータを読み取るようにしていました。ここで
は私のベンダークラスです:
public class Vendor
{
public string FirstName { get; set; }
public string LastName { get; set; }
public Vendor(string firstName, string lastName)
{
FirstName = firstName;
LastName = lastName;
}
}
これは本質的にベンダーの私の.csvファイルを受け取り、文字列配列にそれらをプッシュし、オブジェクトを作成し、それが配列の値を持つプロパティです埋め、その後に項目を追加しますVendor型のリストこのメソッドはエラーをスローしません。
private void ReadFromFile()
{
string line = "";
while ((line = myReader1.ReadLine()) != null)
{
string[] data = line.Split(',');
Vendor v = new Vendor(data[0], data[1]);
store.Vendors.Add(v);
}
}
私は、リストに項目を追加するためのこの同じソリューションをしようとすると、私は私のアイテムクラスに位置型ベンダーの財産である項目の「所有者」に合格したいと思います。私はコンストラクタでオブジェクトをパラメータとして渡す際に実用的な解決策を得ることができなかったので、私は正式なデータ型を渡すことに固執しました。私は基本的に、First Name & Last NameのVendorのプロパティを使用し、それらをItem Ownerの姓と名字として設定したいと考えています。
public class Item
{
public string Title { get; set; }
public decimal Price { get; set; }
public Vendor Owner { get; set; }
public Item(string title, decimal price, string fName, string lName)
{
Title = title;
Price = price;
Item.Owner.FirstName = fName; // this is what I want to do
Item.Owner.LastName = lName; // throws objref error
}
}
//Input file format: title,price,fname,lname
while ((line = myReader2.ReadLine()) != null)
{
string[] data2 = line.Split(',');
decimal price = decimal.Parse(data2[1]);
Item i = new Item(data2[0],price,data2[2],data2[3]);
store.Items.Add(i);
}
文字列を配列にそれを作るが、私は、デバッガを実行して、私のstore.Itemsリストをチェックしたときに、すべてのプロパティの値がnullである所有者を除いて設定されています。 私は1つの解決策が何とかfName + lNameを1つの文字列に結びつけることができると知っていますが、私はItemコンストラクタがどのパラメータを受け入れるか設定する必要があるかを理解するのに苦労しています。私が試しても、Onerプロパティは値を受け取らず、残りのアプリケーションがクラッシュする原因になります。
私は数時間これで作業していましたが、実際の解決策、あるいはこのシナリオの回避策を思い付くことはできません。
ご協力いただきまして誠にありがとうございます。
ありがとうございます!
これは魅力のように働いた、迅速な応答をありがとう!そして、はい、コードをコンパイルしなかったので、私は達成しようとしていたアイデアを示したかっただけです。再度、感謝します! –