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
,只需打印列表中的元素即可。