gpt4 book ai didi

c# - 在构造函数中初始化一个虚拟属性是错误的吗?

转载 作者:行者123 更新时间:2023-11-30 12:44:28 25 4
gpt4 key购买 nike

<分区>

在构造函数中初始化虚属性是错误的吗?它只是感觉不对,因为如果您重写派生类中的属性,该属性将首先使用基类构造函数中的值进行初始化,然后由派生类构造函数再次分配。这样做有其他选择吗?我在谈论这样的事情

internal class B1
{
public B1()
{
Ti = "Hello";
}

public virtual string Ti { get; set; }
}

internal class B2 : B1
{
public B2()
{
Ti = "HelloKitty";
}

public override string Ti { get; set; } //<--"Hello" will be assigned first then "HelloKitty" will be assigned
}

internal class Program
{
private static void Main(string[] args)
{
var b2 = new B2();
Console.WriteLine(b2.Ti);
Process.GetCurrentProcess().WaitForExit();
}
}

更新 1:正如@AK_ 所推荐的

internal class Bb1
{
private string _ti;

public Bb1()
{
_ti = "Hello";
}

public virtual string Ti
{
get { return _ti; }
set { _ti = value; }
}
}

internal sealed class Bb2 : Bb1
{
public Bb2()
{
Ti = "HelloKitty";
}

public override string Ti { get; set; }
}

基类中的变量_ti由“Hello”初始化。 _ti is still in the base class

如果我使用的不是字符串类型,而是明确需要公开的类型怎么办?

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