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: 通用属性的缺点?