gpt4 book ai didi

c# - struct vs class 中使用的泛型

转载 作者:行者123 更新时间:2023-12-04 01:30:41 24 4
gpt4 key购买 nike

假设我们有以下 struct使用泛型的定义:

public struct Foo<T>
{
public T First;
public T Second;

public Foo(T first)
{
this.First = first;
}

}

编译器说

'Foo.Second' must be fully assigned before control is returned to the caller



但是,如果 Foo是一个类,那么它编译成功。
public class Foo<T>
{
public T First;
public T Second;

public Foo(T first)
{
this.First = first;
}

}

为什么?为什么编译器对它们的处理方式不同?此外,如果第一个 Foo 中没有定义构造函数然后它编译。为什么会有这种行为?

最佳答案

这是因为编译器规则强制要求必须在控制离开任何构造函数之前分配结构中的所有字段。

你可以通过这样做让你的代码工作:

public Foo(T first)
{
this.First = first;
this.Second = default(T);
}

另见 Why Must I Initialize All Fields in my C# struct with a Non-Default Constructor?

关于c# - struct vs class 中使用的泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13731798/

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