Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.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中的字段#_C#_Static - Fatal编程技术网

C# 关于「;“静态”;c中的字段#

C# 关于「;“静态”;c中的字段#,c#,static,C#,Static,我的应用程序中有commonFields类。这是asp.NETMVC在线应用程序的简单测试/考试。假设学生已使用其凭证登录。他得到了选择测试,并说加载它。它将在某个控制器中加载测试,每个测试都有一组问题。现在有了这个测试id,我得到了那个特定测试的问题列表。并存储在commonfield类的 public static List<Question> questionList; 公共静态列表问题列表; 反对。由于静态,它将与应用程序一样。但如果同一时间另一个学生登录并执行相同或

我的应用程序中有commonFields类。这是asp.NETMVC在线应用程序的简单测试/考试。假设学生已使用其凭证登录。他得到了选择测试,并说加载它。它将在某个控制器中加载测试,每个测试都有一组问题。现在有了这个测试id,我得到了那个特定测试的问题列表。并存储在commonfield类的

 public static List<Question> questionList; 
公共静态列表问题列表;
反对。由于静态,它将与应用程序一样。但如果同一时间另一个学生登录并执行相同或不同的测试。然后,他所选测试的问题将再次存储到questionList对象中(同上)


就像说100的学生进行测试。那么对问题列表有什么影响呢?它总是需要实例化吗?在公共课上?如何管理?或者由于静态,CLR将对其进行管理?

您应该在
应用程序
对象中存储公共数据,并在
会话
中存储每个学生的数据

在某些情况下,每个会话一次:

  Session["questions"] = CreateQuestionList();
然后,当你需要它时:

   questionList = (List<Question>)Session["questions"] ;
questionList=(列表)会话[“问题”];

您的
静态
变量不可靠,无法扩展到多个服务器,当然也不允许每个学生有不同的问题列表。

您应该在
应用程序
对象中存储公共数据,在
会话
中存储每个学生的数据

在某些情况下,每个会话一次:

  Session["questions"] = CreateQuestionList();
然后,当你需要它时:

   questionList = (List<Question>)Session["questions"] ;
questionList=(列表)会话[“问题”];

您的
静态
变量不可靠,无法扩展到多个服务器,当然也不允许每个学生有不同的问题列表。

作为一个静态字段

问题清单


对于所有记录在案的学生,应保持普通。因此,您必须为每个学生实例化一个新的问题列表实例,并将其存储在该学生的会话中。

作为一个静态字段

问题清单


对于所有记录在案的学生,应保持普通。因此,您必须为每个学生实例化一个新的问题列表实例,并将其存储在该学生的会话中。

您需要将用户的测试id放入会话中。不要尝试在类字段或任何内容中的用户请求之间保存对象状态。
此外,您还需要注意缓存ASP.NET对象,以便快速访问上次加载的测试问题。

您需要在会话中为用户设置测试id。不要尝试在类字段或任何内容中的用户请求之间保存对象状态。
您还需要注意缓存ASP.NET对象,以便快速访问上次加载的测试问题。

您应该使用会话,而不是将问题存储在静态字段中

List<Question> questionList=new List<Question>();
//fill the list with your questions
Session["Questions"] = questionList;
List questionList=新列表();
//把你的问题填在清单上
会话[“问题”]=问题列表;
然后,如果您需要当前学生的问题,请使用:

List<Question> questionList=(List<Question>)Session["Questions"];
List questionList=(List)会话[“问题”];

您应该使用会话,而不是将问题存储在静态字段中

List<Question> questionList=new List<Question>();
//fill the list with your questions
Session["Questions"] = questionList;
List questionList=新列表();
//把你的问题填在清单上
会话[“问题”]=问题列表;
然后,如果您需要当前学生的问题,请使用:

List<Question> questionList=(List<Question>)Session["Questions"];
List questionList=(List)会话[“问题”];

可以,但我不想存储公共数据。我想将每个学生的问题列表存储在全局变量中(我知道c#没有这样的东西),但我需要它。并需要在执行测试时一次加载单个问题。或者我可以将控制器级别变量(class-level)@lalit保存在其中,请参见编辑,这应该可以回答这些问题<代码>会话本身可以被认为是全局的。可以,但我不想存储公共数据。我想将每个学生的问题列表存储在全局变量中(我知道c#没有这样的东西),但我需要它。并需要在执行测试时一次加载单个问题。或者我可以将控制器级别变量(class-level)@lalit保存在其中,请参见编辑,这应该可以回答这些问题<代码>会话本身可以被认为是全局的。