C# 获取对类的写入属性的访问权限

C# 获取对类的写入属性的访问权限,c#,asp.net,C#,Asp.net,我还没有练习oop。。现在我知道了它的重要性:) 我有很多方法,现在我喜欢将收集的字符串保存在公共变量中,以便能够从另一个函数访问它们 通常,我只使用get和set生成公共或私有变量 但我认为这并不干净,因为这些属性在“每一种智能感知”中都是可见的 我认为在类中这样做可能是“testClass”,并在那里定义属性 但是现在,我如何访问写入这个类的属性中的值呢?要在中编写它们,我必须创建类的新实例,但是如何访问创建的实例呢 //编辑 protected void GetValues() {

我还没有练习oop。。现在我知道了它的重要性:)

我有很多方法,现在我喜欢将收集的字符串保存在公共变量中,以便能够从另一个函数访问它们

通常,我只使用get和set生成公共或私有变量

但我认为这并不干净,因为这些属性在“每一种智能感知”中都是可见的

我认为在类中这样做可能是“testClass”,并在那里定义属性

但是现在,我如何访问写入这个类的属性中的值呢?要在中编写它们,我必须创建类的新实例,但是如何访问创建的实例呢

//编辑

    protected void GetValues()
{
    // Access to the public variable town.

    string myNewtown = publictown;
    string myNewName = publicname;

    // How to acces to the values which I saved in the class informations? 
    // I like anything like that
    string myNewtown = informations.publictown;
    string myNewName = informations.publicname;

    // or

    string myNewtown = myinfo.publictown;
    string myNewName = myinfo.publicname;

}

protected void Setvalues()
{
    informations myinfo = new informations()
    {
        publicname = "leo",
        publictown = "london"
    };
}

private string publicname { get; set; }
private string publictown { get; set; }

private class informations
{
    public string publicname { get; set; }
    public string publictown { get; set; }
}

谢谢

如果您希望在不创建实例的情况下访问属性,请使用
静态
关键字

编辑:在您的示例中,您将替换

public string publicname { get; set; }

这允许您将字段读取为

string myNewname = informations.publicname;
并用

informations.publicname = "whatever";

当然,这意味着您的应用程序中只能有一个publicname实例——特别是在ASP.NET应用程序中,这可能不是您想要的

如果要访问已创建的对象,则需要在创建后存储对该对象的引用

看了您的样品后,我可以给您以下更改:

protected void GetValues()
{
// Access to the public variable town.

    string myNewtown = publictown;
    string myNewName = publicname;

// or

    string myNewtown = myinfo.publictown;
    string myNewName = myinfo.publicname;
}

protected void Setvalues()
{
    publicname = "leo";
    publictown = "london";
}

// we store reference to internal object
informations myinfo = new informations();
// and delegate property access to its properties.
public string publicname 
{ 
    get{ return informations.publicname;} 
    set{ informations.publicname = value; } 
}
public string publictown 
{ 
    get{ return informations.publictown;} 
    set{ informations.publictown = value; } 
}


private class informations
{
    public string publicname { get; set; }
    public string publictown { get; set; }
}

你能发一点你的代码并评论一下吗?很抱歉,我不明白您想要实现的目标。publicname和publictown是否应该是全局的(a)对于完整的应用程序,(b)对于当前会话,还是(c)对于您当前正在处理的一个ASP.NET请求?同样感谢您。。真不错!顺便问一下,这是最干净的方式吗?或者我可以把它发展成更多的clena:)?OO设计通常是关于将操作和数据移动到一起。因此,考虑当前使用“代码>公共名称< /代码>和<代码>公城< /代码>的移动逻辑到您的<代码>信息< /代码>类。当然,在不知道手头的任务的情况下,很难说得更多。我通常避免程序中的静态,因为我发现它们很快就会变成PITA(我在其他答案的注释中列出了问题)-而且它们对我来说不够面向对象=)。但是对于一个(非常)简单的程序来说,静态属性可能没有那么有害。在您的任务上下文中考虑一下:您的程序的不同部分是否需要不同的
publictown
publicname
值?如果是,则表示静力学不适用。如果没有,你可以用它们,但要小心。太好了!你让我高兴。这是最干净的发展方式,不是吗?。。。。为什么这个“静态”不是属性的默认设置,它更有用..?标记为
static
的属性和方法对于使用它们的所有对象都是通用的。因此,它们类似于全局变量,从可测试性、调试、多线程并行访问等角度来看,它们都是一个问题。它们需要谨慎使用。面向对象的整个要点是创建对象。使用“static”,可以避免创建对象,而是使用类似于“全局变量”的东西。我无法用500个字符的注释向您解释OO编程,所以我真的建议您在这个主题上获得一些web教程或好书,并从一点理论开始。谢谢,我愿意!。。。问题是没有时间看书。。。但我必须这么做。
protected void GetValues()
{
// Access to the public variable town.

    string myNewtown = publictown;
    string myNewName = publicname;

// or

    string myNewtown = myinfo.publictown;
    string myNewName = myinfo.publicname;
}

protected void Setvalues()
{
    publicname = "leo";
    publictown = "london";
}

// we store reference to internal object
informations myinfo = new informations();
// and delegate property access to its properties.
public string publicname 
{ 
    get{ return informations.publicname;} 
    set{ informations.publicname = value; } 
}
public string publictown 
{ 
    get{ return informations.publictown;} 
    set{ informations.publictown = value; } 
}


private class informations
{
    public string publicname { get; set; }
    public string publictown { get; set; }
}