提升Boolean和out相结合的用户体验
在我们编写代码的过程中经常有这样的需求,比如添加一条数据,我们想要的结果是如果添加成功了就返回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相结合的用户体验的更多相关文章
- 界面优化--如何提升用户体验(Velocity.js和GSAP)
Velocity.js和GSAP 我们需要提升代码质量来留住用户.作为用户界面的建设者,我们的工作是迅速引导和引导用户的注意力,指导他们如何有效地使用我们的应用程序. 1. 如何提升代码质量 定向聚焦 ...
- jQuery 浮动标签插件,帮助你提升表单用户体验
浮动标签模式(Float Label Pattern)是最新流行的一种表单输入域的内容提示方式,当用户在输入框输入内容的时候,原先占位符的内容向上移动,显示在输入的内容的上面.这里推荐的这款 jQue ...
- Atitit.hybrid混合型应用 浏览器插件,控件的实现方式 浏览器运行本地程序的解决方案大的总结---提升用户体验and开发效率..
Atitit.hybrid混合型应用 浏览器插件,控件的实现方式 浏览器运行本地程序的解决方案大的总结---提升用户体验and开发效率.. 1. hybrid App 1 1.1. Hybrid Ap ...
- paip.提升用户体验--radio图片选择器 easyui 实现..
#paip.提升用户体验--radio图片选择器 easyui 实现.. =================================== ##原因... ------------------- ...
- paip.提升用户体验--提升java的热部署热更新能力
paip.提升用户体验--提升java的热部署热更新能力 想让java做到php那么好的热部署能力 "fix online"/在线修复吗??直接在服务器上修改源码生效,无需重启应 ...
- paip.提升用户体验----gcc c++ JIT-debugging 技术
paip.提升用户体验----gcc c++ JIT-debugging 技术 作者Attilax , EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http ...
- 提升网站用户体验—WebP 图片的高效使用
一.WebP 的由来 现代图像压缩技术对我们的生活方式影响很大.数码相机能将上千张高质量图片存储到一张内存卡里.智能手机可以与邻近设备快速分享高分辨率的图片.网站与手机等移动设备能快速展示各种富媒体. ...
- paip.提升用户体验-----c++ gcc 命令在notepad++扩展中的配置..
paip.提升用户体验-----c++ gcc 命令在notepad++扩展中的配置.. 作者Attilax , EMAIL:1466519819@qq.com 来源:attilax的专栏 地址: ...
- paip.提升用户体验---c++ qt 取消gcc编译的警告信息.txt
paip.提升用户体验---c++ qt 取消gcc编译的警告信息.txt 作者Attilax , EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http:// ...
随机推荐
- YY语音从4.0版本开始是基于Qt的开发过程,以及碰到的问题
作者:姚冬链接:http://www.zhihu.com/question/21359230/answer/20127715来源:知乎著作权归作者所有,转载请联系作者获得授权. YY语音从4.0版本开 ...
- 找不到Qt5Cored.dll(Release和Debug版连接了不同的库)
Qt5Cored.dll和Qt5Core.dll文件分别用于Qt软件的Debug版和Release版. 通常会有两个Qt5Core.dll文件,分别位于Qti安装目录下的“Qt5.1.0\5.1.0\ ...
- 如何检索Android设备的唯一ID
关于本文档 Android的开发者在一些特定情况下都需要知道手机中的唯一设备ID.例如,跟踪应用程序的安装,生成用于复制保护的DRM时需要使用设备的唯一ID.在本文档结尾处提供了作为参考的示例代码片段 ...
- html 知识
<pre name="code" class="python"><pre name="code" class=" ...
- Java程序员面试题集(71-85)(转)
转:http://blog.csdn.net/jackfrued/article/details/17566627 Java程序员面试题集(71-85) 摘要:这一部分主要包括了UML(统一建模语言) ...
- Tomcat部署项目的几种常见方式
以前学习的时候只知道在Eclipse或者MyEclipse中发布项目到Tomcat,最近实习时发现不同的项目还有不同的发布方式,所以特地学习了Tomcat发布项目的方式,在此记录下来. 1 直接将we ...
- C# 基础概念之延迟加载
本文来自:http://kb.cnblogs.com/page/99182/ 作者: 杨延成 来源: 博客园 发布时间: 2011-05-01 15:06 阅读: 4662 次 推荐: 0 ...
- 将数组,表的某一列转换为string字符串的方法
样例:字符串数组为array,str为字符串数组转换成的字符串 string[] array = { etr, kdgj, 3454, tyt, gff }; string str=string.Jo ...
- 浅谈postMessage多页面监听事件
最近做了一个Echarts和Highcharts多图多页面连动的效果,就用到postMessage 如下介绍: 最开始在最外围的页面也就是所有页面的父级页面添加postMessage监听事件以便监听下 ...
- SQL查询语句47题
select * from student select * from score --select * from grade select * from course select * from t ...