Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.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#_Arrays - Fatal编程技术网

C# 如何在运行时将自定义数据集合存储在内存中?

C# 如何在运行时将自定义数据集合存储在内存中?,c#,arrays,C#,Arrays,我需要收集一些数据并将其临时存储在内存中,然后将其写入文件。 起初我以为我可以用一本字典来完成所有的工作,但当我最终发现时,我意识到我需要第三个元素,所以我想字典是没有用的 布尔问道,这三个元素类似于字符串名、DateTime today 当函数启动时,我需要读取一个文件,其中这些元素每行存储一个,用管道隔开。 在遍历函数时,如果foreach循环中某个条件的计算结果为false,则需要添加项;如果该条件为true,则需要删除项。 函数完成后,我需要擦除文件,并将数组的内容转储回文件 这意味着要

我需要收集一些数据并将其临时存储在内存中,然后将其写入文件。 起初我以为我可以用一本字典来完成所有的工作,但当我最终发现时,我意识到我需要第三个元素,所以我想字典是没有用的

布尔问道,这三个元素类似于字符串名、DateTime today

当函数启动时,我需要读取一个文件,其中这些元素每行存储一个,用管道隔开。 在遍历函数时,如果foreach循环中某个条件的计算结果为false,则需要添加项;如果该条件为true,则需要删除项。 函数完成后,我需要擦除文件,并将数组的内容转储回文件

这意味着要检查John Doe是否被问到他的任务是否已经完成,并且自上次被问起已经过了XX天。 如果已过XX天,请从数组中删除他的记录,再次询问他,并使用今天的日期将新记录添加到数组中。或者简单地说,更改数组中的日期并再次询问。 然后将数组的内容转储到文件中,以便我们明天可以再次查看它

不过,我以前从未使用过数组,因此我完全不知道如何执行此操作。。当我搜索谷歌的时候,我发现了很多例子,但没有一个对我有意义


你们中有谁能告诉我你们将如何处理这个问题,因为我完全不知道。

制作一个具有这3个属性的对象,然后列出这些对象,如:

       class MyClass
       {
           string name;
           bool asked;
           DateTime date;
       }

创建一个具有这3个属性的对象,然后列出这些对象,如:

       class MyClass
       {
           string name;
           bool asked;
           DateTime date;
       }

你应该把自己变成一个物体,比如

class yourObject
{
    string name { get; set; }
    bool asked { get; set; }
    DateTime date { get; set; }
}
然后你可以把它们列成一个列表,在内存中存储多个

List<yourObject> myObjects = new List<yourObject>();

yourObject myObject = new yourObject();

yourObject.name = "Bob";
yourObject.asked = true;
yourObject.date = DateTime.Today;

myObjects.Add(yourObject);
等等。。。在循环中这样做,或者从数据源进行一些数据绑定来填充它


写入文件是另一种动物,试着在谷歌上搜索C如何将数据写入文件。您需要做的是确定您希望如何存储它,因为这将决定您以后如何读取它。你能改用数据库表吗?

你应该把自己变成一个对象,比如

class yourObject
{
    string name { get; set; }
    bool asked { get; set; }
    DateTime date { get; set; }
}
然后你可以把它们列成一个列表,在内存中存储多个

List<yourObject> myObjects = new List<yourObject>();

yourObject myObject = new yourObject();

yourObject.name = "Bob";
yourObject.asked = true;
yourObject.date = DateTime.Today;

myObjects.Add(yourObject);
等等。。。在循环中这样做,或者从数据源进行一些数据绑定来填充它


写入文件是另一种动物,试着在谷歌上搜索C如何将数据写入文件。您需要做的是确定您希望如何存储它,因为这将决定您以后如何读取它。是否可以改用数据库表?

使用类来表示处理的数据:

class PersonTask
{
    public string Name {get;set;}
    public bool Asked {get;set;}
    public DateTime Time {get;set;}
}

现在,您可以使用列表存储所需的数据,或者如果需要按姓名查找人员,可以使用字典。

使用类来表示您使用的数据:

class PersonTask
{
    public string Name {get;set;}
    public bool Asked {get;set;}
    public DateTime Time {get;set;}
}

现在,您可以使用列表存储所需的数据,或者如果需要按姓名查找人员,可以使用字典。

我不明白您为什么要使用数组

只需创建如下对象:

public class RowItem
{
        public string Name{ get; set; }
        public bool Asked{ get; set; }
        public DateTime Date{ get; set; }
}
然后使用IList

IList<RowItem> rows = new List<RowItem>();

我不明白你为什么要使用数组

只需创建如下对象:

public class RowItem
{
        public string Name{ get; set; }
        public bool Asked{ get; set; }
        public DateTime Date{ get; set; }
}
然后使用IList

IList<RowItem> rows = new List<RowItem>();

作为一个较为完整的例子,考虑如下:

public class SurveyData
{
    public string Name { get; set; }
    public bool Asked { get; set; }
    public DateTime Date { get; set; }
}

private Dictionary<string, SurveyData>() SurveyInfo = new Dictionary<string, SurveyData>();

public function LoadData()
{
    // Code to read from disk omitted for brevity. Assume you've parsed
    // the line into 3 variables: name, asked, date.

    var item = new SurveyData()
        {
           Name = name,
           Asked = asked,
           Date = date
        };

    this.SurveyInfo.Add(item.Name, item);
}
public function UpdateIfAsked(string name)
{
    var item = this.SurveyInfo[name];
    if (item != null)
    {
        // Update the itme or remove it.
        if (item.Asked && item.Date < DateTime.Today)
        {
            SurveyInfo.Remove(item);
        }
    }
}
在这个示例中,您仍然在使用字典,因此可以按名称进行搜索。但是项目数据都存储在值中。因此,您可以执行以下操作:

public class SurveyData
{
    public string Name { get; set; }
    public bool Asked { get; set; }
    public DateTime Date { get; set; }
}

private Dictionary<string, SurveyData>() SurveyInfo = new Dictionary<string, SurveyData>();

public function LoadData()
{
    // Code to read from disk omitted for brevity. Assume you've parsed
    // the line into 3 variables: name, asked, date.

    var item = new SurveyData()
        {
           Name = name,
           Asked = asked,
           Date = date
        };

    this.SurveyInfo.Add(item.Name, item);
}
public function UpdateIfAsked(string name)
{
    var item = this.SurveyInfo[name];
    if (item != null)
    {
        // Update the itme or remove it.
        if (item.Asked && item.Date < DateTime.Today)
        {
            SurveyInfo.Remove(item);
        }
    }
}

PS,这对于LINQ来说要容易得多,但是在这一点上对于Ya来说可能有点先进。

作为一个更完整的例子,考虑以下内容:

public class SurveyData
{
    public string Name { get; set; }
    public bool Asked { get; set; }
    public DateTime Date { get; set; }
}

private Dictionary<string, SurveyData>() SurveyInfo = new Dictionary<string, SurveyData>();

public function LoadData()
{
    // Code to read from disk omitted for brevity. Assume you've parsed
    // the line into 3 variables: name, asked, date.

    var item = new SurveyData()
        {
           Name = name,
           Asked = asked,
           Date = date
        };

    this.SurveyInfo.Add(item.Name, item);
}
public function UpdateIfAsked(string name)
{
    var item = this.SurveyInfo[name];
    if (item != null)
    {
        // Update the itme or remove it.
        if (item.Asked && item.Date < DateTime.Today)
        {
            SurveyInfo.Remove(item);
        }
    }
}
在这个示例中,您仍然在使用字典,因此可以按名称进行搜索。但是项目数据都存储在值中。因此,您可以执行以下操作:

public class SurveyData
{
    public string Name { get; set; }
    public bool Asked { get; set; }
    public DateTime Date { get; set; }
}

private Dictionary<string, SurveyData>() SurveyInfo = new Dictionary<string, SurveyData>();

public function LoadData()
{
    // Code to read from disk omitted for brevity. Assume you've parsed
    // the line into 3 variables: name, asked, date.

    var item = new SurveyData()
        {
           Name = name,
           Asked = asked,
           Date = date
        };

    this.SurveyInfo.Add(item.Name, item);
}
public function UpdateIfAsked(string name)
{
    var item = this.SurveyInfo[name];
    if (item != null)
    {
        // Update the itme or remove it.
        if (item.Asked && item.Date < DateTime.Today)
        {
            SurveyInfo.Remove(item);
        }
    }
}

注:这在LINQ中变得容易多了,但在这一点上对你来说可能有点高级。

name Asquid和today的键值是什么?asawyer:嗯,当我想到目录时,键值对应该是字符串名称,key datetime。Nya:对不起,我想不出更好的标题了。问到名字和今天的键值是多少?asawyer:嗯,当我想到目录时,键值对应该是字符串名称,键日期时间。妮娅:对不起,我想不出更好的标题了。哇!当我写我的答案时,有4个人写了同样的答案,因为数组是我唯一能想到的。。正如迈克所指出的那样,林克对我来说是个进步。。很多其他事情也是如此。我是Faaaar,来自一个优秀的程序员。。只是试着让事情变得更简单:哇!当我写我的答案时,有4个人写了同样的答案,因为数组是我唯一能想到的。。正如迈克所指出的那样,林克对我来说是个进步。。很多其他事情也是如此。我是Faaaar,来自一个优秀的程序员。。只是试着让事情变得更简单:谢谢你,瑞安幸运的是,我知道如何重新开始
广告和写文件,我只是不知道如何存储我想要的,我需要的方式。我试试你的解决方案,看看效果如何。谢谢你:当然,里卡德,一旦你找到了解决方案,别忘了选择一个选定的答案。祝你好运谢谢你,瑞安幸运的是,我知道如何读写文件,只是不知道如何以我需要的方式存储我想要的东西。我试试你的解决方案,看看效果如何。谢谢你:当然,里卡德,一旦你找到了解决方案,别忘了选择一个选定的答案。祝你好运隐马尔可夫模型。。我完全被困在这里,并试图解决它,但似乎无法解决。如果在字典中找不到该名称,我就会陷入:var item=this.SurveyInfo[name];我一直在尝试先使用ifSurveyInfo.ContainsKeyname{var check=this.SurveyCheck[name];}检查名称是否在字典中,但当我这样做时,编译器抱怨检查在当前上下文中不存在。据我所知,我必须直接初始化check变量,我不能先将其设置为null,然后在字典中找到名称后再填充。没关系,我只是想错了。我只需要在所说的if语句中移动所有应该执行的操作,而不是将该语句和go检查项是否为空:隐马尔可夫模型。。我完全被困在这里,并试图解决它,但似乎无法解决。如果在字典中找不到该名称,我就会陷入:var item=this.SurveyInfo[name];我一直在尝试先使用ifSurveyInfo.ContainsKeyname{var check=this.SurveyCheck[name];}检查名称是否在字典中,但当我这样做时,编译器抱怨检查在当前上下文中不存在。据我所知,我必须直接初始化check变量,我不能先将其设置为null,然后在字典中找到名称后再填充。没关系,我只是想错了。我只需要在所说的if语句中移动所有应该执行的操作,而不是将该语句和go检查项是否为空: