c# - 在不传递参数的情况下创建新对象

标签 c# arrays class object constructor

我正在阅读 Data Structures and Algorithms Using C# (Michael McMillan)。

第 3 章第 43 页中,我发现代码片段在构造函数中接受参数但创建对象时不传递任何内容。

enter image description here

这可能吗?

最佳答案

可能有几种可能性:

  • 打字错误
  • 还有一个过载

    public CArray(int size)
    {
        // Implementation.
    }
    public CArray()
    {
        // Other implementation.
    }
    
  • 可以有默认值

    public CArray(int size = 8)
    {
        // Implementation.
    }
    

即使问题中提供的代码不会“按原样”编译(没有 3 种解释之一 - 有一种方法可以创建未初始化的实例使用 System.Runtime.Serialization.FormatterServices 根本没有构造函数调用:

class SomeType
{
    int mVariable;

    public SomeType(int size)
    {
        mVariable = size;
    }
}

static void Main(string[] args)
{
    Type someType = typeof(SomeType);
    SomeType instance = (SomeType)FormatterServices.GetUninitializedObject(someType);
    // instance.mVariable = 0;
}

请记住,此方法速度慢且不安全,因为您可能会以其开发人员不希望您手动覆盖构造函数的方式使用 class,因此 它应该仅用于序列化目的,而不是用于一般初始化。

关于c# - 在不传递参数的情况下创建新对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39384355/

相关文章:

c++ - 我知道 struct 是一个类,但代码说不

c# - 将 PictureBox 中的图片移动到另一个 PictureBox

c# - 无法使用 C# 访问 Windows 环境变量

c# - ASP.net c# LINQ for 循环

arrays - 如何将列添加到预先存在的 uipickerview

C++ std::array 转换

c# - 如何获取在windows azure中进行的查询的集合?

php - Wordpress: get_attached_media ('image' ) 按标题排序

java拆分每个字母并将其放入表中

python - 如何获取class(__init__)的输入参数个数?