gpt4 book ai didi

c# - Dispose() 是将数据保存到光盘的好地方吗?

转载 作者:行者123 更新时间:2023-11-30 19:53:42 25 4
gpt4 key购买 nike

出于学习目的,我正在创建一个基于 json 的平面文件数据库。我正在更改 JsonDatabase 对象包含的数据,但我只想在完成所有更改后将它们保存到光盘。

这是我目前的做法:

 public class UserMatch
{
public string FirstName { get; set; }
public string LastName { get; set; }
}

public class JsonDatabase : IJsonDatabase, IDisposable
{

private readonly FileStream _jsonDatabaseStream;

private List<UserMatch> _userMatches;
public List<UserMatch> UserMatches
{
get
{
if (_userMatches == default(List<UserMatch>))
{
string fileContent;
using (var sr = new StreamReader(_jsonDatabaseStream))
{
fileContent = sr.ReadToEnd();
}
_userMatches = JsonConvert.DeserializeObject<List<UserMatch>>(fileContent);
}
return _userMatches;
}
set { _userMatches = value; }
}

public JsonDatabase(string fileLocation)
{
_jsonDatabaseStream = File.Open(fileLocation, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.Read);
}

public void Dispose()
{
string serialisedJson = JsonConvert.SerializeObject(UserMatches);
using (var sr = new StreamWriter(_jsonDatabaseStream))
{
sr.Write(serialisedJson);
}
_jsonDatabaseStream.Dispose();
}
}

Dispose() 是执行此操作的正确位置吗?或者我应该创建一个单独的提交/保存方法?

最佳答案

Is Dispose() the correct place to do this?

不,它用于清理。不要通过混入其他问题来混淆事情。

Or should I rather create a separate Commit/Save method?

是的,这会迫使调用代码专注于调用它的方式和时间。而且它简单得多。

关于c# - Dispose() 是将数据保存到光盘的好地方吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46947425/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com