gpt4 book ai didi

c# - 如果出现故障, "out"参数应该是什么?

转载 作者:太空宇宙 更新时间:2023-11-03 19:54:52 25 4
gpt4 key购买 nike

我读过这个相关问题:What should the out value be set to with an unsuccessfull TryXX() method?

但是这个问题涉及原始类型,例如整数等。

我正在实现类似的 TryXXX ,该问题的答案表明默认值为 out应该是 null当方法不成功时。然而 out我的方法中的类型是不可为 null 的值类型。

以我的代码为例:

    public bool TryParseFileLine(string fileLine, out FileResult result)
{
if(!string.IsNullOrWhiteSpace(fileLine))
{
result = null;
return false;
}
// Logic here for if the string wasn't empty etc.
}

public struct FileResult
{
public bool IsValid;
public string Value;
}

result = null行不编译因为 Cannot convert null to 'FileResult' because it is a non-nullable value type .

所以在我的情况下,result 的值应该是多少?当方法失败时?理想情况下,我希望它为 null,因为这对我来说最有意义。

编辑:将使用 Nullable<FileResult>在这里是个好主意?例如:

        public bool TryParseFileLine(string fileLine, out Nullable<FileResult> result)
{
if(!string.IsNullOrWhiteSpace(fileLine))
{
result = null;
return false;
}
// Logic here for if the string wasn't empty etc.
result = new FileResult();
}

最佳答案

根据经验,要么使用 default(FileStruct)(并确保该值具有某种意义 - 它等同于 new FileStruct()值类型),或者更好的是,完全删除 out 参数 并返回可为 null 的 FileStruct? 值。

public FileResult? TryParseFileLine(string fileLine)
{
if (string.IsNullOrWhiteSpace(fileLine))
return null;

...
}

bool TrySomething(out Result result) 模式早于语言中的可空结构,并且恕我直言不应该用于新代码,因为它会给调用者带来不便(因为需要大多数时候声明一个额外的变量)。
使用可空结构作为返回值对调用者来说要好得多,并且不需要您在代码中返回无意义的值。

关于c# - 如果出现故障, "out"参数应该是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34833677/

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