c#新类实例与调用方法之间的内存差异



我正在我的c#应用程序中构建一个日志系统。目前我有一个日志记录方法,我调用它来写入日志文件。例如

Log("Hello World");

我想做的是写一个类,而不是每次我想记录一些东西时都实例化它,构造函数会写入日志文件。例如

new WriteLog {Message="Hello World"};

这样做的原因是参数具有更大的灵活性。

然而,我想知道每次记录某个东西时实例化一个类是否比调用该方法花费更多的内存。我实例化的每个类都在内存中持久存在吗?

它们将暂时保留,但会被垃圾收集器及时删除。无论如何,除非你在短时间内打了很多电话,否则这不会对内存产生更大的影响。

然而,我确实怀疑这是否是一个很好的类用法。在我看来,你错用了一个构造函数,我认为它不适合你的代码。构造函数应该初始化数据,而不是执行诸如日志数据之类的操作。此外,在您的示例中,构造函数在您分配属性之前被调用。

我认为真正的问题是为什么你觉得一个类在参数上有更大的灵活性。

可能是你没有尝试过命名参数和可选参数。这可能是你想要查找的东西。

您可以创建Logger类的扩展,并可以在项目中使用Logger来记录异常或信息。

样本代码

public static class LoggerExtensions
{
public static void LogCustomError(this ILogger logger, string message, params object[] args) => logger.LogError(message, args);
public static void LogCustomError(this ILogger logger, Exception exception, string message, params object[] args) => logger.LogException(exception, message, args);
}

使用

public class TestClass : ITestClass
{
private readonly ILogger<ITestClass> _logger;
public TestClass(ILogger<TestClass> logger)
{
_logger = logger;
}
public voidTesMethod()
{
try
{
}
catch (Exception ex)
{
_logger.LogException(ex, "Got error");
}
}

}

最新更新