C# 什么';从课程列表中打印有什么问题? MyData data=newmydata{MyInt=1,MyString=“Smith”}; MyData data1=newmydata{MyInt=3,MyString=“Wesson”}; MyData data2=newmydata{MyInt=2,MyString=“Colt”}; List lst=新列表(); 添加(数据); 第一次添加(数据1); 第一次添加(数据2); Console.WriteLine(\n排序前:); foreach(lst中的MyData MyInt) { Console.WriteLine((MyInt)); Console.WriteLine(lst.ToString()); }
刚刚做了一个简单的练习列表,但是在输出中我有一些错误C# 什么';从课程列表中打印有什么问题? MyData data=newmydata{MyInt=1,MyString=“Smith”}; MyData data1=newmydata{MyInt=3,MyString=“Wesson”}; MyData data2=newmydata{MyInt=2,MyString=“Colt”}; List lst=新列表(); 添加(数据); 第一次添加(数据1); 第一次添加(数据2); Console.WriteLine(\n排序前:); foreach(lst中的MyData MyInt) { Console.WriteLine((MyInt)); Console.WriteLine(lst.ToString()); },c#,list,class,C#,List,Class,刚刚做了一个简单的练习列表,但是在输出中我有一些错误 为什么会这样?我希望得到它的内容。两种不同的方法给了我相同的结果。列表填充可能是我错了吗?MyInt将是类型为MyData-的变量,而不是对象MyData的MyInt属性。MyData类是否覆盖ToString()?这就是控制台。WriteLine在尝试写入对象时将查找的内容-否则,它将使用对象中的默认值,这就是您看到的内容 你可能想要更像这样的东西: MyData data = new MyData { MyInt = 1, MyStrin
为什么会这样?我希望得到它的内容。两种不同的方法给了我相同的结果。列表填充可能是我错了吗?
MyInt
将是类型为MyData
-的变量,而不是对象MyData
的MyInt
属性。MyData
类是否覆盖ToString()
?这就是控制台。WriteLine
在尝试写入对象时将查找的内容-否则,它将使用对象
中的默认值,这就是您看到的内容
你可能想要更像这样的东西:
MyData data = new MyData { MyInt = 1, MyString = "Smith" };
MyData data1 = new MyData { MyInt = 3, MyString = "Wesson" };
MyData data2 = new MyData { MyInt = 2, MyString = "Colt" };
List<MyData> lst = new List<MyData>();
lst.Add(data);
lst.Add(data1);
lst.Add(data2);
Console.WriteLine("\nBefore sort:");
foreach (MyData MyInt in lst)
{
Console.WriteLine((MyInt));
Console.WriteLine(lst.ToString());
}
而是写入MyData
对象的MyInt
属性
如果需要,可以像在MyData
class/struct中那样重写ToString
方法:
Console.WriteLine("\nBefore sort:");
foreach (MyData myData in lst)
{
Console.WriteLine(myData.MyInt);
}
MyInt
将是对象MyData
的MyInt
属性类型的变量。MyData
类是否覆盖ToString()
?这就是控制台。WriteLine
在尝试写入对象时将查找的内容-否则,它将使用对象
中的默认值,这就是您看到的内容
你可能想要更像这样的东西:
MyData data = new MyData { MyInt = 1, MyString = "Smith" };
MyData data1 = new MyData { MyInt = 3, MyString = "Wesson" };
MyData data2 = new MyData { MyInt = 2, MyString = "Colt" };
List<MyData> lst = new List<MyData>();
lst.Add(data);
lst.Add(data1);
lst.Add(data2);
Console.WriteLine("\nBefore sort:");
foreach (MyData MyInt in lst)
{
Console.WriteLine((MyInt));
Console.WriteLine(lst.ToString());
}
而是写入MyData
对象的MyInt
属性
如果需要,可以像在MyData
class/struct中那样重写ToString
方法:
Console.WriteLine("\nBefore sort:");
foreach (MyData myData in lst)
{
Console.WriteLine(myData.MyInt);
}
默认情况下,
MyData
类使用从System.Object
继承的ToString()的实现。该函数返回关于类的非常通用的信息——几乎只是类名,以及关于任何通用类型参数的一些有限信息
如果希望ToString()
显示不同的信息,您需要自己覆盖它:
public override string ToString()
{
return MyInt.ToString(); // assuming you just want to see the MyInt property...
}
默认情况下,MyData
类使用从System.Object
继承的ToString()的实现。该函数返回关于类的非常通用的信息——几乎只是类名,以及关于任何通用类型参数的一些有限信息
如果希望ToString()
显示不同的信息,您需要自己覆盖它:
public override string ToString()
{
return MyInt.ToString(); // assuming you just want to see the MyInt property...
}
如果您希望输出每个MyData对象,那么您需要通过覆盖默认值来实现自己的ToString方法,这是您在上面看到的结果(仅显示对象引用)。您还应该将变量称为不同的名称。不要在for循环中使用MyInt。可以把它称为数据之类的有意义的东西。也不要在你的类前面加上我的前缀。错误的做法。如果您希望输出每个MyData对象,那么您需要通过覆盖默认值来实现自己的ToString方法,这是您在上面看到的结果(仅显示对象引用)。您还应该将变量称为不同的名称。不要在for循环中使用MyInt。可以把它称为数据之类的有意义的东西。也不要在你的类前面加上我的前缀。错误做法。MyData需要重写ToString函数并提供您正在查找的信息。MyData需要重写ToString函数并提供您正在查找的信息。奇怪的是,仍然显示相同的结果。我应该如何正确地编写Console.WriteLine(lst.ToString())-这一部分?lst
变量的类型是List
,它类似于MyData
从对象继承它的ToString()
List
不会使用MyData
中的ToString()
,因为它不是MyData
。所以,我应该将覆盖放在其他地方,或者重新声明lst?不要使用ToString
,只需打印列表的元素。奇怪的是,仍然显示相同的结果。我应该如何正确地编写Console.WriteLine(lst.ToString())-这一部分?lst
变量的类型是List
,它类似于MyData
从对象继承它的ToString()
List
不会使用MyData
中的ToString()
,因为它不是MyData
。因此,我应该将覆盖放在其他地方,或者重新声明lst?不要使用ToString
,只需打印列表中的元素即可。