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

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,您可以从任何地方访问它..

【讨论】:

感谢您提供答案。

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