C#类,实例,Form1,标签-帮助列表

问题描述 投票:-1回答:2

首先,由于我缺乏知识,我想道歉,但是我刚刚开始学习C#-在家隔离的效果:)。我希望其他人有很多空闲时间,并且会很友好地向我解释一下。

我想使用Class作为包含字符串的数据结构:名称,引用,描述。然后调用它100次以产生可从其他Class访问的结构。

例如:dane [0] .Name;dane [0] .Ref;dane [0] .desc;dane [1]。名称; ......原因是我想循环通过给它赋值。

Q1。

[当我创建Class的实例时,例如:Class1 dane =新的Class1(); -工作正常,但是如何制作“丹麦人”数组?例如:Class1 [] dane =新Class [10];label1.Text = dane [0] .Name; -引发错误-'对象引用未设置为对象的实例。

Q2。

如何从其他类访问该数据,例如:dane [0] .Name。 (我知道Struct,不允许这样做,但是Class将引用相同的内存,因此应该可以访问)。

Q3。

我可以从Form1之外的其他位置创建标签并将值分配给标签吗?例如,这就是如何从Class1访问label1.Text?

c# class label instance
2个回答
0
投票

1)

Class1[] dane = new Class1[10];

创建一个由十个Class1元素组成的empty数组,但实际上并没有创建Class1对象来将该数组放入数组中。您将需要类似:

for (int i = 0; i < dane.Length; ++i)
    dane[i] = new Class1();

2)

只要在程序中传递数据,该数据就可以在程序中的任何位置使用。因此,如果我们有一堂课

class Class2
{
    public void Process(Class1 c)
    {
        c.Name = "Wibble";
    }
}

可以与:一起使用

Class2 c2 = new Class2();

c2.Process(dane[0]); // Presuming dane[0] has been initialized as in (1)

3)

您可以通过类似于上面的(2)的方式访问label1.Text,但是最好也不要这样,因为您访问它的类将仅在WinForms程序中工作。而是以以下形式进行此类工作:

// Anywhere in the code
class Class3
{
    public string GetText () {return "Wobble";}
}

然后以您的形式:

Class3 c3 = new Class3();

label1.Text - c3.GetText();

0
投票

关于Q1,您创建了一个数组,但是在尝试访问它之前,没有在插槽0中放入任何数据。首先放入一些数据:

danes[0] = new Class1() { Name = "hello" };

Re Q2,c#不像JavaScript,您可以在其中var进行某些操作,然后可以在任何地方进行全局访问。 OO的许多功能是将数据保存在适当的位置,并在需要时将其传递出去,而不是使变量成为任何人都可以访问的大型共享数据罐的一部分。结构具有相当狭窄的用例。暂时不要使用它们,直到您的编程知识有所发展。为了将数据转换成其他形式,可以将数组传递给其他形式。创建另一种形式的方法,该方法采用Class1 []作为参数,然后调用它,传递要提供的数据:

public void SetDaneArray(Class1 danes)
  ...

//elsewhere
OtherForm f = new OtherForm();
f.SetDaneArray(danes); //danes = the array on this form 

关于Q3,您可以公开标签,但不可以。像在Q2中那样创建一个方法,该方法需要一个字符串并设置标签,然后从其他位置调用该方法

© www.soinside.com 2019 - 2024. All rights reserved.