gpt4 book ai didi

c# - 静态构造方法与构造函数

转载 作者:太空狗 更新时间:2023-10-30 00:52:43 24 4
gpt4 key购买 nike

在 .NET 框架中,我经常看到用静态函数代替构造函数来构造新对象的习语。

例如,对于 BigInteger,没有接受字符串的构造函数,所以这是不可能的:

BigInteger i = new BigInteger("1000000103453543897");

但是有一个静态的Parse函数。

BigInteger i = BigInteger.Parse("1000000103453543897");

为什么经常选择这样的类设计?

我唯一能想到的就是少了一个对象被创建然后被丢弃。这真的是主要原因吗?还是有其他原因?

BigInteger(string value)
{
BigInteger result = new BigInteger(); // this one just returned in a Parse function

// compute bigint

// copy result to this
data = new uint[maxLength];
for (int i = 0; i < result.Length; i++)
data[i] = result.data[i];

Length = result.dataLength;
}

最佳答案

可能有很多原因 - 研究工厂方法模式

对于您的示例 - 许多人认为在构造函数中/从构造函数调用重要逻辑是一种不好的做法(我不想从构造函数中抛出异常,除非它缺少参数)。使用工厂方法允许实现保证在对象构造时运行,而不是在构造函数中运行。

关于c# - 静态构造方法与构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20218898/

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