gpt4 book ai didi

没有 new 的 C# 内部结构

转载 作者:太空宇宙 更新时间:2023-11-03 18:32:18 25 4
gpt4 key购买 nike

是否允许使用以下代码?内部 struct 在外部 class 中声明,并且不会为该结构调用 new。它没有崩溃,但我对此有些怀疑。

struct Inner
{
public int i;
}

private class Outer
{
public Outer() { inner.i = 10; }

private int i;
public Inner inner;
}

private static void Main(string[] arg)
{
Outer o = new Outer();

Console.WriteLine(o.inner.i);
}

最佳答案

以下引用自MSDN并显示结构与类的不同之处(请参阅我用粗体 格式化的部分,它们应该可以回答您的问题):

“结构与类共享大部分相同的语法,尽管结构比类更受限制:

  • 在结构声明中,字段不能被初始化,除非它们被声明为 const 或 static。
  • 结构不能声明默认构造函数(没有参数的构造函数)或析构函数。
  • 结构在分配时被复制。将结构分配给新变量时,将复制所有数据,对新副本的任何修改都不会更改原始副本的数据。在处理诸如 Dictionary<string, myStruct> 等值类型的集合时,请务必记住这一点。 .
  • 结构是值类型,类是引用类型。
  • 与类不同,结构可以在不使用 new 的情况下实例化。运算符(operator)。
  • 结构可以声明具有参数的构造函数。
  • 结构不能继承自另一个结构或类,也不能是类的基类。所有结构都直接继承自 System.ValueType , 它继承自 System.Object .
  • 结构可以实现接口(interface)。
  • 结构可以用作可为 null 的类型,并且可以分配一个 null 值。”

关于没有 new 的 C# 内部结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20514783/

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