簡體   English   中英

在C#中創建一個類對象

[英]Creating a class object in C#

我正在嘗試創建一個類的對象,但它似乎不起作用,我不禁想到我從JAVA的角度來看這個:

 public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            PortChecks PortCheckObject = new PortChecks();

        }

private void testCheck_Click(object sender, EventArgs e)
        {
            PortCheckObject.MyMethod();
        }

使用PortCheckObject調用我的方法MyMethod時,我會出錯

(PortChecks是班級名稱)

這是因為它超出了testCheck_Click的范圍

public partial class Form1 : Form
{
    PortChecks PortCheckObject = new PortChecks();

    public Form1()
    {
        InitializeComponent();
    }

    private void testCheck_Click(object sender, EventArgs e)
    {
        PortCheckObject.MyMethod();
    }
}

Form1構造函數中的PortChecks PortCheckObject是一個局部變量。
將其聲明作為Form1類中的私有字段。

public partial class Form1 : Form
{
    private PortChecks PortCheckObject = new PortChecks();

    public Form1()
    {
        InitializeComponent();
    }

    private void testCheck_Click(object sender, EventArgs e)
    {
        PortCheckObject.MyMethod();
    }
}

@詹姆士,

您需要一個名為“PortCheckObject”的類屬性,並且可以在該類的其他部分中訪問。

public partial class Form1 : Form
{
    private PortChecks PortCheckObject;

    public Form1()
    {
        InitializeComponent();

        PortCheckObject = new PortChecks();
    }

    private void testCheck_Click(object sender, EventArgs e)
    {
        PortCheckObject.MyMethod();
    }
}

這是一個通用的范圍問題,而不是Java與C#問題(因為您的代碼也不適用於Java)。 PortCheckObject在Form1()的范圍內,而不是testCheck_Click的范圍。 請嘗試以下方法:

public partial class Form1 : Form
{
    private PortChecks PortCheckObject;

    public Form1()
    {
        InitializeComponent();

        PortCheckObject = new PortChecks();

    }

private void testCheck_Click(object sender, EventArgs e)
    {
        PortCheckObject.MyMethod();
    }

這是范圍問題的一個實例。 您的testCheck_Click方法中沒有范圍。 進行以下更改,它應該工作:

public partial class Form1 : Form
{
    private PortChecks MyPortCheck {get; set;}

    public Form1()
    {
        InitializeComponent();
        MyPortCheck = new PortChecks();
    }

    private void testCheck_Click(object sender, EventArgs e)
    {
        MyPortCheck .MyMethod();
    }

...
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM