C# 如何从更高级别的类中选择特性
我试图从C# 如何从更高级别的类中选择特性,c#,C#,我试图从GroceryItem类调用price属性,以便在名为FindCost的GroceryItem子类中的方法中使用 我应该从GroceryItem方法还是属性传递它 class GroceryItem { public string name; public double price; public GroceryItem(string a, double b) { name = a; price = b; } c
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 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;
}
}
}
是的,不幸的是你也有。仅仅因为它是一个嵌套类,并不意味着这些类的实例有任何关系
您可以从
FindCost
GroceryItem
继承PurchasedItem
,这样您就可以在FindCost
方法中拥有这些属性FindCost
方法中实例化GroceyItem
类,然后读取Price属性谢谢您需要在
GroceryItem
construct上创建一个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#online:根据您的要求制作子类,请参见下面的代码
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();
(与密切相关的语言Java不同)这并不意味着如果您定义了嵌套类,那么您就可以访问up类的属性。您是否需要创建子类?您不能创建继承层次结构吗?我建议您简要查看一下.NET Framework关于嵌套类型的指导原则:@DhavalR是必需的子类。我认为您可以使用composite来创建它。你可以试试我的答案:)@Roscoverheij