C#中是否有内置类型包含bool和静态方法返回的字符串?

我正在寻找一种从函数或方法返回的类型,首先传达它是否成功,然后将消息(作为字符串)附加到它以传递有关其失败原因的更多信息。 它可能是应用程序退出代码的一部分; 但是,我不创建一整套退出代码来索引特定的错误消息。 我喜欢单个“成功”退出代码的想法,因此可以快速检查呼叫是否失败并相应地工作。

我想把它作为一系列静态方法(如服务调用)的返回类型,为此我可以创建一个包含这两个字段的类(bool和string); 但是,我觉得这些可能已经存在,尽管我还没有找到它。 此外,如果有更好的实践来处理从方法获得此类信息的返回,或者完全反对这些静态类的一般规则,我欢迎您的意见。

为了更好的可视化

public static  CreateSomething(string somethingName) { ... return new ("Fail!", "Because..."); } 

有两种明显的方法:定义自己的类型或使用Tuple

我认为你应该几乎总是定义自己的类型。 它没有任何成本。 去做就对了。 这就是你的意思。

如果你觉得特别懒,…

 public Tuple MyMethod(...) { ... return Tuple.Create(false, "Something broke"); } 

您可以在.NET框架中遵循TryDoSomething模式,而不是创建新类型。

例如:

 int number; if(Int32.TryParse(value, out number)) { Console.WriteLine(number); } 

您可以创建一个返回布尔值的方法来表示成功或失败。 它还可以返回错误消息的参数。

你在说什么称为generics 。 这是微软对generics的介绍 ,也有很多关于它们的在线。

除此之外 ,您还可以将generics与TryCan模式结合使用。 但是,通常情况下,您只想冒一个exception,所以请仔细考虑

这是一个例外。

您的函数不应返回true / false以获得成功。 如果失败,它应该是一个抛出exception的空白。

…并且不要忘记将exception放在方法的XML注释中。

.net的核心程序集不包含此类型。 您可以在F#运行时中找到Option

我还在一个较旧的问题上发布了这样一种关于SO: 通用属性的缺点?