从其他类中使用字符串 C#

5

我有一个类,调用时需要发送一个字符串来请求/初始化它。

class Checks
{
    public Checks(string hostname2)
    {
        // logic here when class loads

    }

    public void Testing()
    {
        MessageBox.Show(hostname2);
    }
}

如何在类构造函数中使用字符串"hostname2",并使该字符串可以在“Checks”类的任何位置调用?
例如,我从Form1类中调用Checks(hostname2),现在当Checks类被初始化后,我可以在Checks类中使用hostname2字符串。
3个回答

7

在类内部声明一个成员变量,并在构造函数内将传递的值赋给该成员变量:

class Checks
{
    private string hostname2;

    public Checks(string hostname2)
    {
       this.hostname2 = hostname2; // assign to member
    }

    public void Testing()
    {
        MessageBox.Show(hostname2);
    }
}

如果您需要外部访问,将其设置为属性:
class Checks
{
    public string Hostname2 { get; set; }

    public Checks(string hostname2)
    {
       this.Hostname2 = hostname2; // assign to property
    }

    public void Testing()
    {
        MessageBox.Show(Hostname2);
    }
}

按惯例,属性以大写字母开头。现在您可以像这样访问它:

Checks c = new Checks("hello");
string h = c.Hostname2; // h = "hello"

感谢Andy指出:如果你希望该属性只读,可以将setter设置为private:
public string Hostname2 { get; private set; }

2
你可能还应该指出,如果你不希望外部类更改值,可以有一个公共getter但是私有或受保护的setter。 - Andy
你也可以在私有字段上使用 readonly 关键字,以禁止除构造函数外的修改。其他类无法访问私有字段,但 readonly 防止同一类在以后更改其值。换句话说,它允许您指定您的意图。 - TrueWill

2

你需要将构造函数的参数复制到一个类变量中:

class Checks {

    // this string, declared in the class body but outside
    // methods, is a class variable, and can be accessed by
    // any class method. 
    string _hostname2;

    public Checks(string hostname2) {
        _hostname2 = hostname2;
    }

    public void Testing() {
        MessageBox.Show(_hostname2);
    }

}

2
您可以公开一个属性来返回主机名2值,这是暴露您的私有变量的标准。

class Checks
{
    private string _hostname;
    public Checks(string hostname2)
    {
        _hostname = hostname2;
    }
    public string Hostname 
    {
       get { return _hostname; }
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接