C# 泛型类不';t打印第二个参数
我创建了一个泛型类这是我的代码C# 泛型类不';t打印第二个参数,c#,.net,C#,.net,我创建了一个泛型类这是我的代码 using System; public class Node<T> { T data; Node<T> link; public Node(T data, Node<T> link) { this.data = data; this.link = link; } public void Write() { Consol
using System;
public class Node<T>
{
T data;
Node<T> link;
public Node(T data, Node<T> link)
{
this.data = data;
this.link = link;
}
public void Write()
{
Console.WriteLine("Data : " + this.data , this.link);
}
}
class Program
{
static void Main()
{
Node<string> node1 = new Node<string>("Some", null);
Node<string> node2 = new Node<string>("Thing", node1);
node1.Write();
node2.Write();
//to write on the console
Console.ReadKey();
}
}
输出是否应该是
节点1
一些
节点2
有些事
我是对还是错??请告诉我。由于您的
链接
-属性的类型为节点
和控制台。WriteLine
将使用类型ToString
-方法,为了将类的实例打印到控制台,您应该覆盖对象。ToString
:
class Node<T>
{
public override string ToString()
{
return $"{ this.data }, { this.link?.ToString() }";
}
}
由于您的
链接
-属性的类型为节点
和控制台。WriteLine
将使用类型ToString
-方法将类的实例打印到控制台,您应该覆盖对象。ToString
:
class Node<T>
{
public override string ToString()
{
return $"{ this.data }, { this.link?.ToString() }";
}
}
HimBromBeere回答的另一个不使用递归或重写
ToString
方法的方法是将Write
函数更改为:
public void Write()
{
Console.Write("Data: ");
Console.Write($"{data}");
var next = link;
while(next != null)
{
Console.Write($", {link.data}");
next = next.link;
}
}
HimBromBeere回答的另一个不使用递归或重写
ToString
方法的方法是将Write
函数更改为:
public void Write()
{
Console.Write("Data: ");
Console.Write($"{data}");
var next = link;
while(next != null)
{
Console.Write($", {link.data}");
next = next.link;
}
}
Console.WriteLine(“数据:+this.Data,this.link”)代码>。这个链接应该打印在哪里?请阅读string.Format
并了解ToString
-方法以及如何重写它以打印复杂对象(例如,您的节点
-类)。Console.WriteLine(“数据:+this.Data,this.link.Data”)
?@HimBromBeere噢,所以我不能这样打印一些东西一些?@Lucifer将其更改为这个控制台。WriteLine(“数据:“+this.Data”)代码>Console.WriteLine(“数据:+this.Data,this.link”)代码>。这个链接应该打印在哪里?请阅读string.Format
并了解ToString
-方法以及如何重写它以打印复杂对象(例如,您的节点
-类)。Console.WriteLine(“数据:+this.Data,this.link.Data”)
?@HimBromBeere噢,所以我不能这样打印一些东西一些?@Lucifer将其更改为这个控制台。WriteLine(“数据:“+this.Data”)代码>这不会编译sir这一行就是我所需要的This.link?.ToString()
谢谢。不过,这是一个小小的警告,如果你有很多节点,你可能会遇到堆栈溢出异常。你能解释一下吗先生谢谢This.link?.ToString()
doing@BoonMingProg它检查link
是否为null
,如果是,simoply返回null
,否则调用link.ToString
,并返回该值。只是returnlink==null的简写?null:link.ToString()
。这将无法编译。这一行是我所需要的全部This.link?.ToString()
谢谢。不过,这是一个小警告,如果使用递归,那么如果有很多节点,可能会出现堆栈溢出异常。请解释一下,先生谢谢This.link?.ToString()
doing@BoonMingProg它检查link
是否为null
,如果是,simoply返回null
,否则调用link.ToString
,并返回该值。只是returnlink==null的简写?null:link.ToString()
。这是什么,先生$
这基本上是一种更好的字符串处理方式。Format
现在谢谢:)这是什么,先生$
这基本上是一种更好的字符串处理方式。Format
现在谢谢:)