C#中通用返回对象Result<T>(定义及使用)
1. 定义返回对象
// Result 对象是一种显式表示成功结果或失败的类型 // 方法可以返回这个类 ,而不是引发异常。如果操作失败,则 Result 对象将包含错误消息或代码,但不包含异常 public class Result<T> { public T Value { get; } public string Error { get; } public bool IsSuccess => Error == null; private Result(T value, string error) { Value = value; Error = error; } public static Result<T> Success(T value) => new Result<T>(value, null); public static Result<T> Failure(string error) => new Result<T>(default, error); }
2. 函数中用Result做返回值
static void Main(string[] args) { var result = Divide(10, 0); if (result.IsSuccess) { Console.WriteLine($"Result: {result.Value}"); } else { Console.WriteLine($"Error: {result.Error}"); } Console.Read(); } static Result<decimal> Divide(decimal dividend, decimal divisor) { if (divisor == 0) { return Result<decimal>.Failure("Cannot divide by zero."); } return Result<decimal>.Success(dividend / divisor); }
结果:
3. 多种方法调用此Result做返回值
//功能函数1 static Result<decimal> CalculateTax(decimal amount, decimal taxRate) { if (taxRate < 0 || taxRate > 1) { return Result<decimal>.Failure("Invalid tax rate."); } return Result<decimal>.Success(amount * taxRate); } //功能函数2 static Result<decimal> CalculateTotal(decimal amount, decimal taxRate) { var taxResult = CalculateTax(amount, taxRate); if (!taxResult.IsSuccess) { return Result<decimal>.Failure(taxResult.Error); } return Result<decimal>.Success(amount + taxResult.Value); } //调用 static void Main(string[] args) { var totalResult = CalculateTotal(100m, 0.05m); if (totalResult.IsSuccess) { Console.WriteLine($"Total Amount: {totalResult.Value}"); } else { Console.WriteLine($"Error: {totalResult.Error}"); } Console.Read(); }
结果:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律