[英]Error with using ToString in ToString override
我是編碼新手,使用ToString
覆蓋時遇到問題。 當我嘗試在其他ToString
覆蓋中使用已經重載的類的ToString
時,出現此錯誤:
非靜態字段,方法或屬性Freight.ToString()需要對象引用
請幫忙!
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace TruckCmopany
{
class Truck
{
private string name;
private double weightCapacity;
private List<Freight> freights;
public Truck(string name,double weightCapacity)
{
this.Name = name;
this.WeightCapacity = weightCapacity;
List<Freight> freights = new List<Freight>();
}
public string Name
{
get { return name; }
set { name = value; }
}
public double WeightCapacity
{
get { return weightCapacity; }
set { weightCapacity = value; }
}
public override string ToString()
{
StringBuilder sb = new StringBuilder();
sb.Append(this.Name).Append(" - ");
if (freights.Count==0)
{
sb.Append("Nothing loaded");
}
else
{
sb.Append(string.Join(", ", freights)).Append(Freight.ToString());
}
return sb.ToString();
}
public IReadOnlyCollection<Freight> Freights
{
get => freights.AsReadOnly();
}
public void AddFreight(Freight freight)
{
}
}
}
Freight.ToString()
是對靜態方法的調用。 它使編譯器感到困惑,因為它嘗試解析對從object
繼承的非靜態.ToString
的調用。
由於靜態類無法覆蓋成員,因此如果在Freight
類中確實需要靜態ToString
,則需要使用new public
標記該方法。
好吧,我發現您的Freight
不是靜態類。
然后,如果我說對了,並且您想用逗號分隔一連串的運費,則只需
sb.Append(string.Join(", ", freights));
它將隱式地為每個元素調用.ToString
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.