【发布时间】:2020-07-24 11:39:51
【问题描述】:
我正在我的 c# 应用程序中构建一个日志系统。目前我有一个我调用的日志记录方法,它写入日志文件。例如
Log("Hello World");
我想做的是写一个类,而不是每次我想记录一些东西时实例化,然后构造函数写入日志文件。例如
new WriteLog {Message="Hello World"};
这样做的原因是参数更灵活。
但是,我想知道每次记录某些内容时实例化一个类是否比调用该方法具有更多的内存成本。我实例化的每个类是否都保留在内存中?
【问题讨论】:
-
“我正在我的 c# 应用程序中构建一个日志系统”——不要重新发明轮子。请改用
Microsoft.Extensions.Logging。 -
"我实例化的每个类是否都保留在内存中?" - 不。只要有对它的引用。否则最终会被垃圾回收。最终意味着:可以在 2 分钟后
-
“并且构造函数写入日志文件”:这不适用于您的代码。构造函数运行之前你设置消息,那么你会记录什么?
-
如果我必须使用一个日志库,该库需要我编写您在第二个解决方案中拥有的所有不必要的字符,我会立即将其丢弃并使用另一个。在某些用例中,日志记录可能非常常见,并且有几十个这样的记录不可避免地会使代码混乱。
-
另外我想说,如果你可以避免在构造函数中与 IO 相关的东西,你通常应该这样做。你也不能让构造函数异步,AFAIK。
标签: c# class methods instantiation