gpt4 book ai didi

c# - 从 C# 中的构造函数调用实例方法

转载 作者:太空狗 更新时间:2023-10-29 23:17:45 25 4
gpt4 key购买 nike

我有一个相当冗长的构造函数,它正在执行各种初始化工作,因此我想将其中的一些工作分解到一些函数中。这让我想知道我应该将上述函数创建为实例还是静态方法。我理解从构造函数调用虚函数的风险,但我也认为在未 100% 实例化的对象上调用实例方法有些不对。这当然是自相矛盾的。

我很想知道人们对此事的看法。我还发现,通过使用静态方法返回初始化变量,我可以将成员目标设为只读。这是我的场景的简化说明。

public class A
{
private readonly string _foo;

public A()
{
_foo = InitialiseFoo();
}

private static InitialiseFoo()
{
// Do stuff
return new string ("foo");
}
}

最佳答案

这在构造函数中调用实例方法是很正常的,而且方法正在执行初始化。所以基本上这是一种 Extract Method重构以减少构造函数方法主体,因此您将初始化的一部分提取到一个单独的方法中,并且构造函数知道保存输入参数等...

关于 static 修饰符.. 有时(我相信当没有其他方法重构时,因为这看起来不太好 - 从我的角度来看)你需要调用一个方法来传递基数中的结果构造函数,因此在这种情况下,您必须将其标记为静态才能在静态上下文中调用,在其他情况下,请不要使用静态修饰符

public A() 
: base(GetLogger())
{
}

private static ILog GetLogger() ...

关于c# - 从 C# 中的构造函数调用实例方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7765081/

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