【问题标题】:The structure includes reference types [closed]该结构包括引用类型
【发布时间】:2021-11-05 07:28:01
【问题描述】:

结构包含引用字段是否正确?

如下代码:

public class ClassA
{
   //...
}

public class ClassB
{
   //...
}

public struct StructAB
{
   public ClassA a;
   public ClassB b;

   public StructAB(ClassA ca,ClassB cb)
   {
      this.a = ca;
      this.b = cb;
   }
}

【问题讨论】:

  • 您为什么认为您的代码可能不是“正确的方式”?

标签: c# object struct reference


【解决方案1】:

是的,您可以,并且代码将编译。但请记住,结构是值类型。每次将结构作为参数传递时,都会创建每个成员的 shallow 副本。 如果您的结构包含引用类型,则只会复制引用(即指向成员的指针)。 因此,除非有充分的理由让您在结构中使用引用类型,否则请避免使用。

通常,您使用结构类型来设计以数据为中心的小型类型 提供很少或没有行为。例如,.NET 使用结构 表示数字(整数和实数)、布尔值的类型, 一个 Unicode 字符,一个时间实例。如果你专注于 一个类型的行为,考虑定义一个类。类类型有 参考语义。也就是说,一个类类型的变量包含一个 引用该类型的实例,而不是实例本身。

https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/builtin-types/struct#passing-structure-type-variables-by-reference

【讨论】:

  • 感谢回复
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-07-14
  • 1970-01-01
  • 1970-01-01
  • 2013-06-01
  • 2011-07-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多