저는 C #과 프로그래밍 영역을 처음 접했습니다. 저는 책과 유튜브 비디오에서 몇 가지 연습을 수행하여 이러한 많은 개념에 대해 머리를 감았습니다.
현재 나는이 문제에 붙어 있습니다. 위탁 상점에 대한 작은 응용 프로그램이 있고 하드 코딩 된 샘플 데이터를 제거하고 프로그램이 텍스트 파일에서 데이터를 읽도록하는 작업을하고있었습니다.
내 공급 업체 클래스는 다음과 같습니다.
public class Vendor
{
public string FirstName { get; set; }
public string LastName { get; set; }
public Vendor(string firstName, string lastName)
{
FirstName = firstName;
LastName = lastName;
}
}
이것은 본질적으로 Vendors의 .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);
}
}
목록에 항목을 추가하기 위해 동일한 솔루션을 시도 할 때 항목 클래스에있는 Vendor 유형의 속성 인 항목의 "소유자"를 전달하고 싶습니다. 객체를 생성자에서 매개 변수로 전달하는 작업 솔루션을 얻을 수 없었기 때문에 형식적인 데이터 유형을 전달하기로 결정했습니다. 기본적으로 공급 업체의 이름 및 성 속성을 사용하고이를 항목 소유자의 이름과 성으로 설정하고 싶습니다.
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)를 제외한 모든 속성 값이 설정됩니다. 한 가지 해결책이 fName + lName을 하나의 문자열로 결합하는 것이 될 수 있다는 것을 알고 있지만 항목 생성자가 허용 할 매개 변수 측면에서 어떻게 설정해야하는지 이해하는 데 어려움을 겪고 있습니다. 내가 무엇을 시도하든 Oner 속성은 값을받지 못하므로 나머지 응용 프로그램이 중단됩니다.
몇 시간 동안이 작업을 해왔지만 작업 솔루션이나이 시나리오에 대한 해결 방법을 찾을 수없는 것 같습니다.
어떤 도움이라도 대단히 감사합니다.
감사!
코드가 컴파일되지 않는다고 생각하지만 원하는 것은 다음과 같습니다.
Owner = new Vendor(fName, lName);
이것은 본질적으로 Vendor
인스턴스를 생성 하고 Owner
변수에 할당합니다 . Owner
그렇지 않으면 초기화되지 않고 null이므로 예외가 발생합니다.
이 대신 :
Item.Owner.FirstName = fName; // this is what I want to do
Item.Owner.LastName = lName; // throws objref error
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다