C# 在返回将在其他地方使用的对象之前,确保设置所有必需的类属性的最佳方法是什么

C# 在返回将在其他地方使用的对象之前,确保设置所有必需的类属性的最佳方法是什么,c#,C#,我有一个类,它需要在被其他对象使用之前调用一个特定的方法,这个方法实现所有必需的逻辑,并将类的属性设置为它们各自的值。如何确保在返回对象供其他对象使用之前调用此类的方法?我听说在构造函数中实现逻辑是个坏主意,所以我不能在构造函数中调用这个方法。此类实现的代码示例如下所示: SomeClass myClass = new SomeClass("someName"); //Class must call this method if object is to be of any use myClas

我有一个类,它需要在被其他对象使用之前调用一个特定的方法,这个方法实现所有必需的逻辑,并将类的属性设置为它们各自的值。如何确保在返回对象供其他对象使用之前调用此类的方法?我听说在构造函数中实现逻辑是个坏主意,所以我不能在构造函数中调用这个方法。此类实现的代码示例如下所示:

SomeClass myClass = new SomeClass("someName");
//Class must call this method if object is to be of any use
myClass.ConvertNameToFunnyCharacters();
return myClass;

不建议在c'tor中包含大量逻辑的原因是,在c'tor中,对象仍然无效。如果你的“其他”方法就是这样做的,那么它作为任务的一部分就可以了。

不建议在任务中有很多逻辑的原因是,在任务中,对象仍然无效。如果你的“other”方法就是这样做的,那么作为c'tor的一部分就可以了。

如果在类可以使用之前需要调用该方法,那么我觉得它很像构造函数应该做的事情。构造函数也是一种特殊的方法,那么“在构造函数中实现逻辑”有什么错呢?

如果在使用类之前需要调用该方法,那么在我看来,它与构造函数应该做的事情非常相似。构造函数也是一种特殊的方法,那么“在构造函数中实现逻辑”有什么错呢?

如果必须正确构造对象,那么将逻辑放在构造函数中不是一个坏主意。如果你想将对象重置为默认状态,你应该考虑把逻辑放在另一种方法中,这应该是公共< /代码>。

如果要正确构建对象,那么将逻辑放进构造函数不是一个坏主意。如果你想能够“重置”,你应该考虑把逻辑放在另一种方法中——应该是<代码>公共< /代码>。对象将返回其默认状态。

根据我的说法,我将在构造函数中调用它,或者您将对类用户造成负担,在使用此方法之前调用此方法。

根据我的说法,我将在构造函数中调用它,或者您将对类用户造成负担,在使用此方法之前调用此方法,根据您的需要进行保护或保密,并实施工厂模式。 这是当您需要一些对象初始化以避免高对象依赖性时如何进行的


根据需要将构造函数设置为内部、受保护或私有,并实现工厂模式。 这是当您需要一些对象初始化以避免高对象依赖性时如何进行的


在构造函数中放入大量逻辑可能会导致一些问题:

  • 如果构造函数调用对象的方法,则这些方法在部分构造的对象中运行。当你重写子类中的方法时,这真的会咬你一口:在Java和C中,子类的实现将在子类的构造函数初始化对象的扩展状态之前运行,因此会因空指针异常而失败。“C++”工作更“正确”,但会造成不同的混淆效果。
  • 如果构造函数将对象作为参数调用,则使用模拟对象进行单元测试会变得更复杂

因此,我更喜欢使构造函数尽可能简单:只需将参数分配给实例变量。如果我需要执行更复杂的逻辑来初始化一个对象,我会编写一个静态工厂函数来计算构造函数参数值并将它们传递给一个简单的构造函数

在构造函数中放入大量逻辑可能会导致一些问题:

  • 如果构造函数调用对象的方法,则这些方法在部分构造的对象中运行。当你重写子类中的方法时,这真的会咬你一口:在Java和C中,子类的实现将在子类的构造函数初始化对象的扩展状态之前运行,因此会因空指针异常而失败。“C++”工作更“正确”,但会造成不同的混淆效果。
  • 如果构造函数将对象作为参数调用,则使用模拟对象进行单元测试会变得更复杂

因此,我更喜欢使构造函数尽可能简单:只需将参数分配给实例变量。如果我需要执行更复杂的逻辑来初始化一个对象,我会编写一个静态工厂函数来计算构造函数参数值并将它们传递给一个简单的构造函数

我想大多数答案都是一样的!!!3个答案说的是相同的:)掷骰子(顺便说一句,这是正确的答案-构造函数负责确保对象在创建时处于正确的状态)我想我得到的大多数答案都是相同的。但我会等着看其他人是否有不同的想法。但是关于创建一个静态方法来创建类实例并调用所需的方法并返回对象,用户需要做的就是调用静态方法。你觉得怎么样?恭喜你,你刚刚找到了工厂模式:)是的,它可以工作,但实际上它还有其他的好处和用途。我想大多数答案都是一样的!!!3个答案说的是相同的:)掷骰子(顺便说一句,这是正确的答案-构造函数负责确保对象在创建时处于正确的状态)我想我得到的大多数答案都是相同的。但我会等着看其他人是否有不同的想法。但是关于创建一个静态方法来创建类实例并调用所需的方法并返回对象,用户需要做的就是调用静态方法。你觉得怎么样?恭喜你,y