另一个类中的方法“不存在”编译器错误[重复]

Posted

技术标签:

【中文标题】另一个类中的方法“不存在”编译器错误[重复]【英文标题】:Method in another class 'does not exist' compiler error [duplicate] 【发布时间】:2019-09-15 03:20:51 【问题描述】:

我确信这很简单。我对 C# 不是很熟悉(我实际上是从 C++ 移植过来的)。

单击“确定”后,我正在调用CalculateFrontages 类中的方法CalculateLines (sn-p):

 private void Button_Click(object sender, RoutedEventArgs e)
    
        //     MessageBox.Show("User clicked OK");

        string value = MSTGapThresholdInMeters.Text;
        MSTGapValue = Int32.Parse(value);

        MainWindowViewModel.RedTLS =  CalculateFrontages.CalculateLines(MainWindowViewModel.RedArmy, Map.MetersPerPixel, MSTGapValue);
        MainWindowViewModel.BlueTLS = CalculateFrontages.CalculateLines(MainWindowViewModel.BlueArmy, Map.MetersPerPixel, MSTGapValue);

        this.DialogResult = true;
    

这就是我要调用的另一个类CalculateFrontages中的方法CalculateLines (sn-p):

namespace TacticalAILib

public class CalculateFrontages


    static int[] U;

    private static TacLineStruct CalculateLines(List<MATEUnit> Army, double MetersPerPixel, int MSTGapValue)
    

        int TempFrom, TempTo;
        float TempWeight;
        int NumEdges = 0;
        double Threshold = MetersPerPixel * MSTGapValue;
        U = new int[Army.Count];

它抛出了这个编译器错误:

错误 CS0426 类型名称“CalculateLines”在类型“CalculateFrontages”中不存在

我认为这是范围错误或声明错误。我只是对此知之甚少。

【问题讨论】:

嗯,是private,不是吗。 private static TacLineStruct CalculateLines... 如果是私有的,则不能在类外引用。不过,该错误消息似乎与该代码不匹配。 “错误 CS0122 'CalculateFrontages.CalculateLines()' 由于其保护级别而无法访问” 而不是? 或者在TacticalAILib之外的另一个命名空间中有另一个名为CalculateFrontages的类 (在提出问题时假设您的读者是最好的很有价值。如果您告诉人们您认为他们会不合理地投反对票,那么投反对票可能是该言论的结果。请尽量省略问题中不必要的对话材料,并坚持问题本身。谢谢!) 【参考方案1】:

该方法的可访问性级别为private,这意味着除所有者类之外的其他任何请求都无法访问该函数。如果您将其更新为public,您可以从任何地方访问它..

【讨论】:

感谢您提供答案。

以上是关于另一个类中的方法“不存在”编译器错误[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在类中使用自定义排序时出现编译错误 [重复]

C ++错误C2600:无法定义编译器生成的特殊成员函数(必须首先在类中声明)[重复]

在C#中,关于重载方法的说法正确的是(D)。 (选择一项)

C#:基类中的受保护方法;无法使用来自另一个类的派生类对象进行访问[重复]

错误 LNK2019 - 抽象类中的虚拟析构函数 [重复]

C++ 编译器错误 MDM2009 发现重复类型处理引用另一个库的 2 个 Windows 组件库的元数据文件