Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在类级别使用私有共享对象/变量是否有害?_C#_Asp.net_Architecture_Asp.net 2.0_Asp.net 3.5 - Fatal编程技术网

C# 在类级别使用私有共享对象/变量是否有害?

C# 在类级别使用私有共享对象/变量是否有害?,c#,asp.net,architecture,asp.net-2.0,asp.net-3.5,C#,Asp.net,Architecture,Asp.net 2.0,Asp.net 3.5,谢谢你的关注和时间。我需要你对一个基本的建筑问题的意见 在page behind类中,我使用私有和共享对象和变量(列表或仅客户端或simplay int id)临时保存来自数据库或类库的数据。此对象临时用于捕获数据,然后返回、传递给某个函数或绑定控件 第一:这种方法有什么害处吗?我无法分析它,但有一个想法是,当多个用户同时发送请求时,使用这样的共享变量可能会替换其中的数据 第二:请对在BLL中使用此类变量(保存来自DAL/数据库的数据)发表评论。在本例中,每次创建BLL类的新对象时 以下是示例代

谢谢你的关注和时间。我需要你对一个基本的建筑问题的意见

在page behind类中,我使用私有和共享对象和变量(列表或仅客户端或simplay int id)临时保存来自数据库或类库的数据。此对象临时用于捕获数据,然后返回、传递给某个函数或绑定控件

第一:这种方法有什么害处吗?我无法分析它,但有一个想法是,当多个用户同时发送请求时,使用这样的共享变量可能会替换其中的数据

第二:请对在BLL中使用此类变量(保存来自DAL/数据库的数据)发表评论。在本例中,每次创建BLL类的新对象时

以下是示例代码:

public class ClientManager
{
    Client objclient = new Client();  //Used in 1st and 2nd method
    List<Client> clientlist = new List<Client>();// used in 3rd and 4th method
    ClientRepository objclientRep = new ClientRepository();

    public List<Client> GetClients()
    {
        return clientlist = objclientRep.GetClients();
    }
    public List<Client> SearchClients(string Keyword)
    {
        return clientlist = objclientRep.SearchClients(Keyword);
    }

    public Client GetaClient(int ClientId)
    {
        return objclient = objclientRep.GetaClient(ClientId);
    }

    public Client GetClientDetailForConfirmOrder(int UserId)
    {
        return objclientRep.GetClientDetailForConfirmOrder(UserId);
    }
}
公共类客户端管理器
{
Client objclient=new Client();//在第一个和第二个方法中使用
List clientlist=new List();//用于第3和第4个方法
ClientRepository objclientRep=新ClientRepository();
公共列表GetClients()
{
return clientlist=objclientRep.GetClients();
}
公共列表搜索客户端(字符串关键字)
{
return clientlist=objclientRep.SearchClients(关键字);
}
公共客户端GetaClient(int-ClientId)
{
返回objclient=objclientRep.GetaClient(ClientId);
}
公共客户端GetClientDetailForConfirmOrder(int UserId)
{
返回objclientRep.getclientdetailforconfirorder(UserId);
}
}

我真的很感谢您抽出时间和给予我的关注。

如果您为每次页面刷新创建一个此类的新实例,那么这将不会是一个问题,因为每个请求都将使用所有类各自的实例运行。

如果您为每次页面刷新创建一个此类的新实例,然后,这不是问题,因为每个请求都会用它自己的所有类的实例运行。

如果你为每个页面创建新的实例,并且像GETclipse()这样的函数很重,你可能会考虑不为每个页面/会话运行它,而是使用一些缓存机制。
另一方面,如果这个类在系统范围内只有一个实例,则需要同步,这样一个线程在另一个线程读取数据时不会更改数据。

如果您正在为每个页面创建新实例,并使用诸如GetClients()之类的函数你可能想考虑不要为每个页面/会话运行它,而是使用一些缓存机制。
另一方面,如果这个类在系统范围内只有一个实例,则需要同步,这样一个线程在另一个线程读取数据时不会更改数据。

谢谢,正如我所描述的,有两种不同的情况1。在课后一页。2.课堂图书馆。在page behind类中,我正在类中创建它的新实例,而不是在某些事件中(在page load方法之上)。在BLL.ck的课堂上也是这样,正如我所描述的,有两种不同的情况1。在课后一页。2.课堂图书馆。在page behind类中,我正在类中创建它的新实例,而不是在某些事件中(在page load方法之上)。在BLL.hi Itay的课堂上也是这样,我不知道如何创建页面的新实例?在类中,我只是在页面加载之前创建对象。(在某些情况下并非如此)请在每次重新创建对象时引导此方法?对于每个页面请求,将创建一个seprate对象?谢谢你在哪里创建ClientManager的新实例?嗨,Itay,我不知道如何创建page的新实例?在类中,我只是在页面加载之前创建对象。(在某些情况下并非如此)请在每次重新创建对象时引导此方法?对于每个页面请求,将创建一个seprate对象?谢谢您在哪里创建ClientManager的新实例?