C#中get和set的错误写法
1. 环境
C#,.NetCore
2. 示例代码
/// <summary>
///
/// </summary>
[SugarColumn(IsIgnore = true)]
public List<string> LinkTableNameList { get; set; } = new List<string>();
/// <summary>
///
/// </summary>
public string LinkTableName
{
get
{
if (LinkTableNameList.IsNullOrEmpty() == true) return null;
return string.Join(",", LinkTableNameList);
}
set
{
if (string.IsNullOrEmpty(value) == false)
{
LinkTableName = value;
LinkTableNameList = value.Split(",").ToList();
}
}
}
3. 情景描述
代码编译不会报错,但是运行到这程序会闪退
4. 原因
在 set 访问器中,直接调用了 LinkTableName = value;,这会导致无限递归,因为 LinkTableName 的 set 访问器会再次被调用
5. 解决方案
不在set中进行赋值,删除LinkTableName = value;这行代码。