这里静态是正确的吗?

时间:2015-12-22 07:47:33

标签: c# asp.net

我有以下课程:

public class Example
{
    public static string GetName(string username)
    {
        //Code to retrieve record from database
        return RetrievedString;
    }
}

我用它来获取需要它的某些功能的用户名称(例如,在登录时将用户的名字放在会话中等。)

代码有效。我的困惑是,如果将它作为静态字符串是正确的,或者我是否应该将其设置为非静态并初始化对象并使用GetName作为属性来检索字符串。

请注意,多个用户将同时在线。

1 个答案:

答案 0 :(得分:0)

请记住,static表示当前字段/属性/方法是类型的成员,而不是实例。静态成员存在于类型级别,并在类型的所有实例之间共享。

通常,您不希望在静态成员中存储任何应该唯一的内容。好的用例是例如连接工厂,具有静态访问权限但生成唯一连接。

在您的示例中,这一切都取决于实现 - 这基本上是一个帮助程序类,并使其可用,您必须传递其中的所有连接逻辑。这似乎不是一个好主意,特别是如果你想模拟连接/结果。如果你真的想让它成为静态的,我会在你的连接对象上使用扩展方法,这样它很容易使用,并且让你的连接可以模拟和注入。