>我正在尝试从GroceryItem
类调用price
属性,以在名为FindCost
的GroceryItem
子类中使用的方法中使用。
我应该从GroceryItem
方法还是属性传递它?
class GroceryItem
{
public string name;
public double price;
public GroceryItem(string a, double b) {
name = a;
price = b;
}
class PurchasedItem
{
public int quantity;
public double FindCost() {
return GroceryItem.price * this.quantity * 1.10;
}
class FreshItem
{
public double weight;
}
}
}
作为您制作子类的要求,请参阅下面的代码。
class GroceryItem
{
public string name;
public double price;
public PurchasedItem pItem
{
get;
set;
}
public GroceryItem(string a, double b)
{
name = a;
price = b;
}
internal class PurchasedItem
{
GroceryItem item;
public PurchasedItem(GroceryItem gItem)
{
item = new GroceryItem(gItem.name, gItem.price);
}
public int quantity;
public double FindCost()
{
return item.price * this.quantity * 1.10;
}
class FreshItem
{
public double weight;
}
}
}
现在,您可以像下面这样制作GroceryItem
实例。
GroceryItem item = new GroceryItem("Name", 1.00);
item.pItem = new GroceryItem.PurchasedItem(item);
item.pItem.quantity = 10;
double cost = item.pItem.FindCost();
您有几个选项可以从GroceryItem
获得价格FindCost
-
您可以从
GroceryItem
继承PurchasedItem
,这样您就可以在FindCost
方法中拥有这些属性 -
可以在该
FindCost
方法中实例化GroceyItem
类,然后读取 Price 属性。
让我知道结果
谢谢
在构造GroceryItem
上创建一个PurchasedItem
实例,然后在PurchasedItem
对象构造参数中传递自身。
您可以按照此代码进行操作
class GroceryItem
{
public string name;
public double price;
public PurchasedItem Purchased { get; private set; }
public GroceryItem(string a, double b)
{
name = a;
price = b;
Purchased = new PurchasedItem(this);
}
}
class PurchasedItem
{
public int quantity { get; set; }
private GroceryItem _groceryItem;
public PurchasedItem(GroceryItem price)
{
_groceryItem = price;
}
public double FindCost()
{
return _groceryItem.price * this.quantity * 1.10;
}
class FreshItem
{
public double weight;
}
}
如果要使用GroceryItem.FindCost()
方法。
您可以直接像这样使用。
GroceryItem grocery = new GroceryItem("test",100);
grocery.Purchased.FindCost()
C# 在线 : http://rextester.com/DQR17613
用清晰的语言回答您的问题:
我应该从杂货项方法还是属性传递它?
是的,不幸的是你也有。仅仅因为它是一个嵌套类,并不意味着这些类的实例有任何关系。
链接到"静态"文档