gpt4 book ai didi

C# 使类静态化?

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

我有一个这样的类:

class ContentManager : IDisposable
{
List<int> idlist = new List<int>();

public int Load(string path)
{
//Load file, give content, gets an id

//...

int id = LoadFile(myfilecontent);

idlist.Add(id);
return id;
}

public void Dispose()
{
//Delete the given content by id, stored in idlist

foreach(int id in idlist)
{
DeleteContent(id);
}
}
}

我想让它成为静态的,因为我只需要一个实例并且可以在不提供实例的情况下从所有其他类访问该函数。

我可以将其中的每个变量和函数设为静态。

但我的问题是这个 IDisposable。我不能在静态类中有接口(interface)。最后我该怎么做?我的意思是我可以删除该接口(interface)但保留其中的函数并使用我的主类,当我的主类被处置时我调用 ContentManager.Dispose()。但是当我忘记它时,我的主要...

你有好的解决方案吗?确保每次程序关闭时调用 Dispose?

编辑:我在图形卡中加载数据并取回指针。当我的应用程序关闭时,我需要从显卡中删除内容。为了安全起见,所有内容都被删除了,我使用了 dispose。

最佳答案

我会将您的类保留为非静态类并实现单例模式。我添加了一个示例,说明如何将其用作单例:

public class ContentManager : IDisposable
{
private List<int> idlist = new List<int>();
private static ContentManager instance;

private ContentManager () {}

public static ContentManager Instance
{
get
{
if (instance == null)
{
instance = new ContentManager ();
}
return instance;
}
}

public int Load(string path)
{
int id = LoadFile(myfilecontent);
idlist.Add(id);
return id;
}

public void Dispose()
{
foreach(int id in idlist)
{
DeleteContent(id);
}
}
}

关于C# 使类静态化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21319065/

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