如何从 C# 中的另一个私有类调用私有类变量

Posted

技术标签:

【中文标题】如何从 C# 中的另一个私有类调用私有类变量【英文标题】:how to call a private class variable form an other private class in C# 【发布时间】:2020-10-13 02:56:50 【问题描述】:

有我的代码如何从私有类下面调用变量 startX

如果 C# 有任何可能的方式从其他私有类调用私有类变量

这可能是一个简单的问题,但我是初学者

你能帮我吗

    private void panel1_MouseDown(object sender, MouseEventArgs e)
    
        moving = true;
        x = e.X;
        y = e.Y;

        panel1.Cursor = Cursors.Cross;
        label1.Text = "" + e.X + "";
        label2.Text = "" + e.Y + "";
        int startX = e.X;
        int startY = e.Y;

    

    private void panel1_MouseUp(object sender, MouseEventArgs e)
    
        moving = false;
        x = -1;
        y = -1;
        panel1.Cursor = Cursors.Default;
        int downy = e.X;
        label3.Text = "" + downy + "";
        string one = "1";

        //how to call int startX on this class




        if (label1.Text == label3.Text || label2.Text == label4.Text)
        
            button1.Text = "The number is : " + one + "";
        
        else
         button1.Text = "The number can't calculat"; 
    

【问题讨论】:

嘿,我认为您将函数与类混合在一起。它们是函数而不是类。对吗? 【参考方案1】:

panel1_MouseDown 不是一个类,它是一个私有方法,你不调用变量,你调用方法。如果你需要在 panel1_MouseUp 方法中使用 startX 的值,你可以给你的 panel1_MouseDown 方法一个返回值或者你创建一个全局变量来存储这个值。由于您的方法是由鼠标事件调用的,因此我建议使用全局变量。

private int lastStartX = 0;

private void panel1_MouseDown(object sender, MouseEventArgs e)

    moving = true;
    x = e.X;
    y = e.Y;

    panel1.Cursor = Cursors.Cross;
    label1.Text = "" + e.X + "";
    label2.Text = "" + e.Y + "";
    int startX = lastStartX = e.X;
    int startY = e.Y;



private void panel1_MouseUp(object sender, MouseEventArgs e)

    moving = false;
    x = -1;
    y = -1;
    panel1.Cursor = Cursors.Default;
    int downy = e.X;
    label3.Text = "" + downy + "";
    string one = "1";

    //how to call int startX on this class
    //do whatever you want with lastStartX


    if (label1.Text == label3.Text || label2.Text == label4.Text)
    
        button1.Text = "The number is : " + one + "";
    
    else
     button1.Text = "The number can't calculat"; 

【讨论】:

太好了,它正在工作。谢谢你帮助我。我完成了。我很高兴【参考方案2】:

简单的答案,你不能。

一些关于本地函数的文档:https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/local-functions。

您将在类中创建一个变量,而不是在函数中。

public class Class

    private int startX;
    private int startY;

    private void panel1_MouseDown(object sender, MouseEventArgs e)
    
        this.startX = e.X;
        this.startY = e.Y;
    
    
    private void panel1_MouseUp(object sender, MouseEventArgs e)
    
        // call this.startX or this.startY
    

【讨论】:

谢谢你,我会为我尝试它的新功能,我不知道 c# 上的类我的东西函数和类在 C# 上是相同的,谢谢你的信息,我会尝试

以上是关于如何从 C# 中的另一个私有类调用私有类变量的主要内容,如果未能解决你的问题,请参考以下文章

如何访问其子类中的类的私有变量?

调用函数从类返回私有变量不起作用

从 C++ 中的类访问私有变量

从 PHP 中的类外部调用私有方法和私有属性

C ++通过访问器函数返回私有二维数组

不是类变量的 Python 私有类变量