gpt4 book ai didi

c# - 您建议以哪种方式返回非空的默认值?

转载 作者:太空宇宙 更新时间:2023-11-03 23:47:41 27 4
gpt4 key购买 nike

我用的是C#语言,但我觉得这道题不受语言限制。我有下一个函数和方法来返回图像名称:

public Func<string> GetImageNameFunc { get; set; }

private string getImageName()
{
if (GetImageNameFunc != null)
{
string imageName = GetImageNameFunc();
if (!string.IsNullOrEmpty(imageName))
{
return imageName;
}
}
return "default.png";
}

过去的逻辑是:

  • 使用 GetImageNameFunc 函数覆盖图像名称
  • 返回null或空字符串来指定,你需要使用默认图片

现在我想为用户提供另一种可能性:他必须能够指定,他根本不希望有图像。因此,他必须能够从函数返回一些值,这意味着他根本不希望获取图像:比方说,Image.None。

我想我可以使用一些像

这样的常量
public const string NoImageName = "|";

,其值与图像不一致,并在事件注释中指定此常量。但我真的不喜欢那样。

有什么建议吗?

最佳答案

将方法分为两种情况:

string TryGetImageName()
{
if (GetImageNameFunc != null)
{
string imageName = GetImageNameFunc();
if (!string.IsNullOrEmpty(imageName))
{
return imageName;
}
}
return null; //no default!
}

string GetImageNameOrDefault() {
return TryGetImageName() ?? "default.png";
}

您的方法是同时做两件事。

备选方案:

string TryGetImageName(string @default = "default.png") {
//...
return @default;
}

NoImageName = "|" 这不是一个好主意。这是一个令人困惑的黑客。与其使用魔术字符串,不如创建一个包含字符串和 bool 值的类,以通知调用者是否使用了默认值。

关于c# - 您建议以哪种方式返回非空的默认值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27061824/

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