我在求职面试中被问到这个问题,但不确定 C# 中还有哪些其他选项可用于创建类的对象。我知道创建对象的基本方法。例如:我有一个名为“ClassName”的类,所以要创建对象,我可以使用
ClassName classNameObject = new ClassName();
Run Code Online (Sandbox Code Playgroud)
有人可以告诉我还有哪些其他方法可以用来实例化一个类?提前致谢!
还有几种方式:
使用反射创建对象。
object classNameObject = Activator.CreateInstance(typeof(ClassName));
Run Code Online (Sandbox Code Playgroud)
的
CreateInstance<T>()通用方法用于由编译器实现的按类型参数指定类型实例化。
在此处查看更多信息。
创建对现有对象的引用。
ClassName classNameObject = new();
ClassName otherClassNameObject = classNameObject;
Run Code Online (Sandbox Code Playgroud)
通过注册一个实例来使用 DI(依赖注入)容器创建一个对象(我不会在这里写代码,因为它取决于你使用的 DI)。
使用反序列化创建一个对象。
BinaryFormatter formatter = new();
(ClassName)formatter.Deserialize(...);
Run Code Online (Sandbox Code Playgroud)
您也可以使用JsonConvert.DeserializeObject<ClassName>.
使用MemberwiseClone创建一个对象。
ClassName classNameObject = new();
ClassName otherClassNameObject = (ClassName) this.MemberwiseClone();
Run Code Online (Sandbox Code Playgroud)
注意,new关键字的不同用法也有很多种,但我在这里没有提到它,因为它只是语法。