CS0103 - 当前上下文中不存在名称“GetListFromCVS”[关闭]
Posted
技术标签:
【中文标题】CS0103 - 当前上下文中不存在名称“GetListFromCVS”[关闭]【英文标题】:CS0103 - The name 'GetListFromCVS' does not exist in the current context [closed] 【发布时间】:2022-01-15 20:51:24 【问题描述】:对于 C# 和一般的面向对象编程来说非常新。我目前在尝试调用驻留在另一个“.cs”文件中但驻留在同一命名空间中的 GetListFromCSV 方法时收到此错误。我不知道为什么我不能调用这个方法?
我最初在 main 中有 GetListFromCSV 方法中的代码,但想把它放在它自己的类文件中以实践 SOLID 原则。在这种情况下可能没有意义?
任何帮助将不胜感激。
谢谢!
主要:
using MathNet.Numerics;
using System.Collections.Generic;
namespace SimPump_Demo
class Program
static void Main(string[] args)
// Get CSV file location
string dirCSVLocation = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
string fileCSVLocation = dirCSVLocation + @"\PumpCurveCSVFiles\pumpcurve.csv";
// Read CSV contents into variable "records"
//CSVToList CSVIsntance = new CSVToList();
List<PumpCurveCSVInput> records = GetListFromCVS(fileCSVLocation);
//float pumpFlowOutput;
double[] pumpFlow = new double[records.Count];
double[] pumpHead = new double[records.Count];
int i = 0;
foreach (var record in records)
//if (record.pumpHead == 50)
//
// pumpFlowOutput = record.pumpFlow;
//
pumpFlow[i] = record.pumpFlow;
pumpHead[i] = record.pumpHead;
i++;
// Determine pump curve
Polynomial.Fit(pumpFlow, pumpHead, 3);
GetListFromCSV 方法:
using CsvHelper;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Linq;
namespace SimPump_Demo
public class CSVToList
public static List<PumpCurveCSVInput> GetListFromCVS(string fileCSV)
List<PumpCurveCSVInput> records;
using (var reader = new StreamReader(fileCSV))
using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
records = csv.GetRecords<PumpCurveCSVInput>().ToList();
return records;
【问题讨论】:
GetListFromCVS()
是 CSVToList
类型的成员,您正试图从 Main()
调用它,它是 Program
类型的成员。所以你需要做CSVToList.GetListFromCVS(fileCSVLocation);
文档:Static classes and static class members
【参考方案1】:
尽管GetListFromCVS
是一个静态方法,它仍然属于CSVToList
类。因此,您必须这样称呼它:
List<PumpCurveCSVInput> records = CSVToList.GetListFromCVS(fileCSVLocation);
只使用类名而不创建实例。
如果你的方法是非静态的
public class CSVToList
public List<PumpCurveCSVInput> GetListFromCVS(string fileCSV)
// Your code
在这种情况下,您应该先创建CSVToList
类的实例,然后才能使用此方法
var csvHelper = new CSVToList();
List<PumpCurveCSVInput> records = csvHelper.GetListFromCVS(fileCSVLocation);
【讨论】:
哇,我忘了我必须在其中包含类名......谢谢!我也很欣赏围绕非静态方法调用的额外上下文!我以前没有使用过非静态方法(老实说,现在甚至不确定它的含义),但我知道它以后会很有用。再次感谢! 类可以有任何类型的properties
和fields
来保存代表对象状态的值。当您创建一个类的实例时,您最终会得到一个变量(在我的示例中为csvHelper
),我们称之为object
(因此称为OOP
)。使用您的对象调用非静态方法,以便它们可以访问对象的字段和属性。相反的静态方法不在对象上执行,而是直接使用您的类名,因此它们无法访问您在类中声明的任何属性或字段。随着您的进步,您将学习如何使用其中一种方法以上是关于CS0103 - 当前上下文中不存在名称“GetListFromCVS”[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
CS0103 - 当前上下文中不存在名称“GetListFromCVS”[关闭]
如何解决 Stripe xamarin 绑定错误? (CS0103 当前上下文中不存在名称“开始”)
using System.Configuration显示灰色,当前上下文中不存在名称“ConfigurationManager”