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);

【讨论】:

哇,我忘了我必须在其中包含类名......谢谢!我也很欣赏围绕非静态方法调用的额外上下文!我以前没有使用过非静态方法(老实说,现在甚至不确定它的含义),但我知道它以后会很有用。再次感谢! 类可以有任何类型的propertiesfields 来保存代表对象状态的值。当您创建一个类的实例时,您最终会得到一个变量(在我的示例中为csvHelper),我们称之为object(因此称为OOP)。使用您的对象调用非静态方法,以便它们可以访问对象的字段和属性。相反的静态方法不在对象上执行,而是直接使用您的类名,因此它们无法访问您在类中声明的任何属性或字段。随着您的进步,您将学习如何使用其中一种方法

以上是关于CS0103 - 当前上下文中不存在名称“GetListFromCVS”[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

CS0103 - 当前上下文中不存在名称“GetListFromCVS”[关闭]

CS0103:当前上下文中不存在名称“ClassName”

编译器错误消息: CS0103: 当前上下文中不存在名称

如何解决 Stripe xamarin 绑定错误? (CS0103 当前上下文中不存在名称“开始”)

ERROR CS0234名称空间名称“编码”不存在

using System.Configuration显示灰色,当前上下文中不存在名称“ConfigurationManager”