在我们编写代码的过程中经常有这样的需求,比如添加一条数据,我们想要的结果是如果添加成功了就返回true,如果添加失败了就返回false,在返回false的同时携带错误信息,我们通常的做法是定义这样的方法

 public bool Add(string name,out string error)

虽然说这样写可以符合我们的需求,当是总觉得不对劲,而且很麻烦,在接收时还有定义一个接收error的变量,对于我们这些coder来说就是用户体验不好,于是我左思右想,写了个结构来提供这个用户体验,下面是结构代码:

 public struct Can
{
private bool _isTrue; public string Error { get; set; } public static bool operator true(Can param)
{
return param._isTrue == true;
} public static bool operator false(Can param)
{
return param._isTrue == false;
} public static bool operator !(Can param)
{
return !param._isTrue;
} public static bool operator ==(Can arg1, bool arg2)
{
return arg1._isTrue == arg2;
} public static bool operator !=(Can arg1, bool arg2)
{
return !(arg1._isTrue == arg2);
} public static implicit operator Can(bool arg)
{
return new Can { _isTrue = arg };
} public static implicit operator bool(Can arg)
{
return arg._isTrue;
} public static implicit operator Can(string arg)
{
return new Can { _isTrue = false, Error = arg };
} public override bool Equals(object obj)
{
if (!(obj is Can))
return false; Can can = (Can)obj; return can._isTrue == this._isTrue && can.Error == this.Error;
} public override int GetHashCode()
{
return this._isTrue.GetHashCode() ^ this.Error.GetHashCode();
}
}

下面是用例代码:

 public static Can Add(int number)
{
if (number < )
return "number 不能小于0";
return true;
}

可以同时返回String类型和Boolean类型,返回String是默认的Boolean为false,主要是通过public static implicit operator Can(string arg)这个指针重写的。

下面来看看测试结果:

 public static void Main()
{
Can can = Add(); if (can == true)
Console.WriteLine("添加成功"); if (!can)
Console.WriteLine(can.Error); can = Add(-); if (can)
Console.WriteLine("添加成功"); if (can == false)
Console.WriteLine(can.Error);
}

是不是很方便,嘻嘻。。。。

如果大家有更好的方法,不妨拿出来分享下呗!

提升Boolean和out相结合的用户体验的更多相关文章

  1. 界面优化--如何提升用户体验(Velocity.js和GSAP)

    Velocity.js和GSAP 我们需要提升代码质量来留住用户.作为用户界面的建设者,我们的工作是迅速引导和引导用户的注意力,指导他们如何有效地使用我们的应用程序. 1. 如何提升代码质量 定向聚焦 ...

  2. jQuery 浮动标签插件,帮助你提升表单用户体验

    浮动标签模式(Float Label Pattern)是最新流行的一种表单输入域的内容提示方式,当用户在输入框输入内容的时候,原先占位符的内容向上移动,显示在输入的内容的上面.这里推荐的这款 jQue ...

  3. Atitit.hybrid混合型应用 浏览器插件,控件的实现方式 浏览器运行本地程序的解决方案大的总结---提升用户体验and开发效率..

    Atitit.hybrid混合型应用 浏览器插件,控件的实现方式 浏览器运行本地程序的解决方案大的总结---提升用户体验and开发效率.. 1. hybrid App 1 1.1. Hybrid Ap ...

  4. paip.提升用户体验--radio图片选择器 easyui 实现..

    #paip.提升用户体验--radio图片选择器 easyui 实现.. =================================== ##原因... ------------------- ...

  5. paip.提升用户体验--提升java的热部署热更新能力

    paip.提升用户体验--提升java的热部署热更新能力 想让java做到php那么好的热部署能力  "fix online"/在线修复吗??直接在服务器上修改源码生效,无需重启应 ...

  6. paip.提升用户体验----gcc c++ JIT-debugging 技术

    paip.提升用户体验----gcc  c++ JIT-debugging 技术 作者Attilax ,  EMAIL:1466519819@qq.com  来源:attilax的专栏 地址:http ...

  7. 提升网站用户体验—WebP 图片的高效使用

    一.WebP 的由来 现代图像压缩技术对我们的生活方式影响很大.数码相机能将上千张高质量图片存储到一张内存卡里.智能手机可以与邻近设备快速分享高分辨率的图片.网站与手机等移动设备能快速展示各种富媒体. ...

  8. paip.提升用户体验-----c++ gcc 命令在notepad++扩展中的配置..

    paip.提升用户体验-----c++ gcc 命令在notepad++扩展中的配置.. 作者Attilax ,  EMAIL:1466519819@qq.com  来源:attilax的专栏 地址: ...

  9. paip.提升用户体验---c++ qt 取消gcc编译的警告信息.txt

    paip.提升用户体验---c++ qt 取消gcc编译的警告信息.txt 作者Attilax ,  EMAIL:1466519819@qq.com  来源:attilax的专栏 地址:http:// ...

随机推荐

  1. 利用radio实现纯css选项卡切换

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAtIAAABCCAIAAAD18aaXAAAG70lEQVR4nO3dO5KrPBCGYRY0VV4OEX

  2. haproxy之配置文件解析

    功能--> 提供高可用/负载均衡/基于tcp和http应用的代理;支持虚拟主机,特别适用于负载特大的web站点. 配置文件解析--> #配置文件-->开启/proc/net/ipv4 ...

  3. 镜像树(dfs)

    1214: J.镜像树 时间限制: 1 Sec  内存限制: 64 MB提交: 18  解决: 7 标签提交统计讨论版 题目描述 一棵二叉树,若其与自己的镜像完全相同,就称其为镜像树(即这棵二叉树关于 ...

  4. thinkphp项目目录

    #   ThinkPHP核心文件介绍        ├─ThinkPHP.php     框架入口文件    ├─Common 框架公共文件    ├─Conf 框架配置文件    ├─Extend ...

  5. Java 之String.valueOf(obj)

    实例代码如下: String str = null; String uSelectDate = String.valueOf(str); System.out.println("====== ...

  6. css案例学习之通过relative与absolute实现带说明信息的菜单

    效果如下 代码 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www ...

  7. Webix快速跨浏览器的JavaScript UI组件

    网址:http://webix.com/ 寥寥几行代码就将页面渲染出来了,确实值得一试!

  8. ftp报错 200 port command successful. consider using pasv 425 failed to establish connection

    最近在公司做的项目是需要在客户端录制视频,然后通过ftp传到服务器端.客户端是windows,服务器端linux.今天用新的电脑配置好项目之后,测试数据传输时出现了“200 port command ...

  9. 实现action的三种方法

    1.一个普通的类 public class testAction1 { public String execute(){ return "success"; } } 2.实现Act ...

  10. 代码中实际运用memcached——.NET

    本文取自:http://blog.csdn.net/dyllove98/article/details/9115947 memcached安装:============================ ...