当我使用stepinto并将其添加到列表时,公用方法“ NyBok”起作用,但是当我尝试使用VisaBöcker()
显示列表时,列表为空。
{
class Bibliotikarie
{
private List<Bok> Böcker = new List<Bok>();
public static void VisaBöcker()
{
var gg = new Bibliotikarie();
foreach (Bok item in gg.Böcker)
{
Console.WriteLine();
Console.WriteLine("\"" + item.Titel + "\" av " + item.Skribent + ". År " + item.UtÅr + ". ( " + item.Typ + " )");
Console.WriteLine();
}
public static void NyBok()
{
var gg = new Bibliotikarie();
gg.Böcker.Add(new Roman(TitSvar, FörSvar, ÅrSvar));
}
}
class Bok
{
public string Titel;
public string Skribent;
public string Typ;
public int UtÅr;
}
class Roman : Bok
{
public Roman(string _Titel, string _Skribent, int _UtÅr)
{
Titel = _Titel;
Skribent = _Skribent;
UtÅr = _UtÅr;
base.Typ = "Roman";
}
(NyBok()
的代码被缩短了,因为它对于瑞典语用户来说是很多不必要的代码。)
答案 0 :(得分:2)
在 NyBok 中创建类 Bibliotikarie 的新实例,然后将项目添加到其Böcker变量中。您只能这样做,因为 Roman 类是 Bibliotikarie 类的内部对象,否则是Böcker私有变量,您不能从< em> Bibliotikarie 类。
但是在方法中创建的 gg 变量是局部变量,当您退出该方法时,该变量将被丢弃,并且其中的所有内容均会被破坏。
现在,当您调用方法VisaBöcker时,将创建类 Bibliotikarie 的另一个实例,该实例具有一个显然为空的新List。
我会在您的代码中更改很多逻辑。首先,不是 Roman 类的责任是向 Bibliotikarie 中添加项目,接下来,我将从 Bibliotikarie 中提取内部类 em>类,并使它们可以由处理 Bibliotikarie 实例的外部代码访问。
现在我们可以拥有
co6 <- crossprod(scale(mat)) / (nrow(mat) - 1)
co6[upper.tri(co6, diag = TRUE)] <- 0
此结构将允许编写这样的代码
public class Bibliotikarie
{
private List<Bok> Böcker = new List<Bok>();
// This method adds a Bok instance or a derived one to your list
public void AddBok(Bok b)
{
Böcker.Add(b);
}
public void VisaBöcker()
{
foreach (Bok item in Böcker)
{
Console.WriteLine($"\r\n\"{item.Titel}\" av {item.Skribent}. År {item.UtÅr}. ( {item.Typ} )\r\n");
}
}
}
public class Bok
{
public string Titel;
public string Skribent;
public string Typ;
public int UtÅr;
}
public class Roman : Bok
{
public Roman(string _Titel, string _Skribent, int _UtÅr)
{
Titel = _Titel;
Skribent = _Skribent;
UtÅr = _UtÅr;
base.Typ = "Roman";
}
}
现在,您只有一个类 Bibliotikarie 的实例,将项目添加到该实例中,并从包含填充列表的同一实例中显示它们。
答案 1 :(得分:-5)
您要在整数位置插入字符串
ÅrSvar是一个字符串
gg.Böcker.Add(new Roman(TitSvar, FörSvar, ÅrSvar));