假設我有下面的類結構:C#確實改變了返回的類對象改變原始狀態?
public class spaList
{
private List<customerItemFulfillment> customers;
public customerItemFulfillment addNewCustomer(
string customerNumber, string customerName)
{
customers.Add(new customerItemFulfillment(customerNumber, customerName));
return customers[customers.Count - 1];
//Would running .addItem() on this returned object affect the object in the list?
}
}
public class customerItemFulfillment
{
public string customerNumber { get; }
public string customerName { get; }
public List<itemFulfillment> fulfillmentItems { get; }
public void addItem(string itemNumber, double rebateAmount,
double fulfillmentPercent)
{
fulfillmentItems.Add(new itemFulfillment(itemNumber,
rebateAmount, fulfillmentPercent));
}
public customerItemFulfillment(string customerNumber, string customerName)
{
this.customerNumber = customerNumber;
this.customerName = customerName;
}
}
如果我不喜歡的東西:
spaList spaListings = new SpaList();
customerItemFulfillment newCustomer = spaListings.addNewCustomer(
"customer name", "customer number");
newCustomer.addItem("item number", 25.00, 8.0);
這是否改變customerItemFulfillment
對象spaList.customers
或者是它只是一個該對象的副本?
即。我以後能夠做些什麼 - spaListings.customers[0].fulfillmentItems[0]
,並且那是我之前添加的項目嗎?
是的。它會改變它。閱讀關於引用類型以及它們如何在C#中傳遞。另外,你爲什麼要問,當運行小樣本程序會告訴你? – Euphoric
這會讓你花更少的時間來運行你已經編寫的代碼,並找出你自己的代碼,而不是你寫這個問題。 – Servy
@Servy不是我的電腦,並在git上有代碼,並對我的結構感到好奇/它只是感覺不到100%正確 – Adjit