调用C#方法时出现CS7036错误,请求解决汽车列表展示问题
C#汽车列表显示问题修复方案
你在作业里遇到的CS7036错误,主要是因为调用方法时参数传递有误,再加上几个小的语法/规范问题,我帮你逐一梳理并修复:
代码里的核心问题
- 静态方法无法直接调用实例方法:
Main是静态方法,而你定义的display是普通实例方法,静态上下文里不能直接调用非静态方法。 - 调用
display时未传递必需参数:display方法要求传入一个List<auto>类型的参数,但你调用时写的是display(),完全没传参数,这就是CS7036错误的直接原因。 - 参数命名与类名冲突:
display的参数名用了auto,和你的汽车类名重名了,编译时会产生歧义,得换个名字。 - 循环内的
ReadKey导致交互异常:把Console.ReadKey()放在foreach循环里,会显示一辆车就暂停一次,体验不好,应该移到循环外面。
修复后的完整代码
Program类代码
using System; using System.Collections.Generic; using System.Text; namespace auto { class Program { static void Main(string[] args) { List<auto> autos = new List<auto>(); auto auto1 = new auto("Lamborgini", "Aventador", "2004"); // 别忘了把创建的汽车对象添加到列表里!你之前漏了这一步 autos.Add(auto1); // 调用display时传入autos列表,并且因为display改成了静态方法,直接调用即可 display(autos); } // 改成静态方法,参数名改为autosList避免和类名冲突 static void display(List<auto> autosList) { foreach (auto item in autosList) { Console.WriteLine("Merk :" + item.merk); Console.WriteLine("Model :" + item.model); Console.WriteLine("Jaar :" + item.jaar); // 加个分隔线让输出更清晰 Console.WriteLine("------------------------"); } // 把ReadKey移到循环外,所有内容显示完再暂停 Console.ReadKey(); } } }
汽车类代码(顺便优化下命名规范,C#类名建议用PascalCase)
using System; using System.Collections.Generic; using System.Text; namespace auto { // 类名首字母大写,符合C#命名规范 class Auto { public string merk { get; set; } public string model { get; set; } public string jaar { get; set; } public Auto(string merk, string model, string jaar) { this.merk = merk; this.model = model; this.jaar = jaar; } } }
注:如果保留原来的类名
auto,Program代码里的List<auto>和实例化部分不用改,只是首字母大写更符合C#的编码习惯。
额外提醒
你之前创建了auto1对象,但没有把它添加到autos列表里,就算修复了方法调用,也会因为列表为空而没有输出内容,所以一定要加上autos.Add(auto1)这一步哦!
内容的提问来源于stack exchange,提问作者Nick Glas
相关产品推荐
相关产品推荐

