gpt4 book ai didi

c# 如何使用 get;如果未设置值,返回一个值?

转载 作者:太空狗 更新时间:2023-10-30 00:49:25 25 4
gpt4 key购买 nike

我正在尝试定义 get; set; 初始化属性时的值。

我有如下界面

public interface IReportColumn
{
string Title { get; set; }

string ColumnKey { get; }

AggregateFunctions AggregateFunction { get; set; }

string SqlAlias { get; }

}

如果 AggregateFunction == AggregateFunctions.None || 我需要做的是将属性 SqlAlias 设置为随机字符串ColumnKey == null。但是,由于我在这里生成一个随机字符串,所以我不希望每次调用 get 方法时它都发生变化。我希望能够在整个请求中获取、设置它并重用相同的值。

这就是我实现界面的方式

public class ReportColumnMsSqlServer : IReportColumn
{

public string Title { get; set; }

public string ColumnKey { get; set; }

public AggregateFunctions AggregateFunction { get; set; }

public string SqlAlias {

get {

return this.GetColumnName();

}
}


private string GetColumnName()
{
string columName = this.ColumnKey;

if (columName == null || this.AggregateFunction != AggregateFunctions.None)
{
columName = Convert.ToBase64String(Guid.NewGuid().ToByteArray());
}

return string.Format("{0}", new Regex("[^a-zA-Z0-9]").Replace(columName, string.Empty));
}

}

如何根据我的上述条件仅设置一次 SqlAlias 值并在整个请求中保持相同的值?

最佳答案

可以引入一个新的私有(private)字段来存储信息,并且只在第一次访问时计算值:

private string _sqlAlias = null;
public string SqlAlias {

get {
if (_sqlAlias == null)
_sqlAlias = this.GetColumnName();
return _sqlAlias;

}
}

根据您的用例,由于返回值同时基于 ColumnKeyAggregateFunction,您可以实现这两个属性的 setter 以设置 _sqlAlias 返回到 null,因此进一步调用 SqlAlias 将根据其他更新的属性重新计算新值。

关于c# 如何使用 get;如果未设置值,返回一个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38147679/

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