C#之Ref,Out以及TryParse()的用法
ref和out用法很简单,我记下来也提醒自己要用更好的方式去写代码,不要让代码过于臃肿,让人看得头痛。直接写
ref:ref关键字就是让参数进行传递,但是需要初始化,而out不需要初始化参数
ref用法:
private static void Main(string[] args)
{
User user = new User()
{
UserName = "张三",
Age = ,
DisPlayValue = ""
};
RefTest(ref user);
Console.WriteLine("用户名:{0};年龄:{1};分类:{2}",user.UserName,user.Age,user.DisPlayValue);
Console.ReadKey();
}
public static void RefTest(ref User user)
{
if (user.Age<)
{
user.DisPlayValue = "未成年人";
}
else if (user.Age<)
{
user.DisPlayValue = "中年人";
}
else
{
user.DisPlayValue = "老年人";
}
}
public class User
{
/// <summary>
/// 用户名
/// </summary>
public string UserName { get; set; }
/// <summary>
/// 年龄
/// </summary>
public int Age { get; set; }
/// <summary>
/// 显示信息
/// </summary>
public string DisPlayValue { get; set; }
}
显示结果:
总结:ref就是自己初始化一个参数,然后这个参数根据业务需要进行改变。
out的方法:这个比较常见,比喻用户添加数据返回值是一个bool,但是有时候插入数据成功时候需要返回一些信息,比喻返回用户插入的UID,插入失败后返回信息等
private static void Main(string[] args)
{
string ErrInfo = string.Empty;
bool result = IsAdmin("admi", out ErrInfo);
Console.WriteLine(ErrInfo);
Console.ReadKey();
}
/// <summary>
/// 是否验证成功
/// </summary>
/// <param name="UserName">用户名</param>
/// <param name="ErrInfo">错误信息</param>
/// <returns></returns>
public static bool IsAdmin(string UserName, out string ErrInfo)
{
bool result = false;
if (UserName=="admin")
{
result = true;
ErrInfo = "成功";
}
else
{
ErrInfo = "登录错误,不是admin";
}
return result;
}
运行结果:

总结:out就是定义一个参数,然后接收操作后返回的信息。
TryParse():
有时候我们需要把string类型转换成int类型,经常用int.Parse(),但是我觉得不如用int.TryParse(),因为int.Parse()会抛出异常如果有错误,如果避免就需要用判断string参数是不是有效,而int.TryParse()却不需要,他会返回true还是false,当false的时候我们还可以设定默认值。个人觉得用int.TryParse()更好下面代码写用法
看下写法:
//此时会返回false
string Str = "122a";
int Number = int.TryParse(Str,out Number) ? Number : -;
//返回true的结果
string Strr = "";
int Numberr = int.TryParse(Strr, out Numberr) ? Numberr : -;
Console.WriteLine("第一个:{0}", Number);
Console.WriteLine("第二个:{0}", Numberr);
运行结果:

C#之Ref,Out以及TryParse()的用法的更多相关文章
- tryParse的用法。
tryParse的用法. int.Parse()是一种类容转换:表示将数字内容的字符串转为int类型.如果字符串为空,则抛出ArgumentNullException异常:如果字符串内容不是数字,则抛 ...
- out与ref以及可空类型用法的用法
1.ref的用法:传递结构 public class A { public int X{get;set;} } public static void changeA(ref A a) { a.X=2 ...
- 【C#笔札】Tryparse的用法
这是参考读物的上得一个例子.自己仿照做的作业 private void button1_Click(object sender, EventArgs e) { int P_int_Number,i; ...
- C#中 int.TryParse 的用法
int i = -1;bool b = int.TryParse(null, out i);执行完毕后,b等于false,i等于0,而不是等于-1,切记. int i = -1;bool b = in ...
- tryparse的用法,^0*[1-9]\d*$
Entry entry = new Entry(); Int32 iParam; if(Int32.TryParse(entry.ajh,out iParam)) { /*如果转换成功就输出iPara ...
- WPF C# int.TryParse的用法
; if (!int.TryParse(item.Tag.ToString(), out comld)) { continue; } 没转换成功就continue 开始写成 if(GetNumber( ...
- TryParse()的用法
DateTime dt = new DateTime(); DateTime.TryParse(txtName.text.trim(),out dt); string str1 = dt.ToStri ...
- TryParse用法示例
int.Parse()是一种类型转换:表示将数字内容的字符串转为int类型.如果字符串为空,则抛出ArgumentNullException异常:如果字符串内容不是数字,则抛出FormatExce ...
- TryParse用法
int.Parse()是一种类型转换:表示将数字内容的字符串转为int类型. 如果字符串为空,则抛出ArgumentNullException异常: 如果字符串内容不是数字,则抛出FormatExce ...
随机推荐
- fastjson反序列化TemplatesImpl
环境参考第一个链接,直接用IDEA打开 编译EvilObject.java成EvilObject.class 先看poc,其中NASTY_CLASS为TemplatesImpl类,evilCode是E ...
- MYSQL统计
今天 select * from 表名 where to_days(时间字段名) = to_days(now()); 昨天 SELECT * FROM 表名 WHERE TO_DAYS( NOW ...
- 《STL源码剖析》要点摘抄
1. STL的空间配置器 SGI STL设计了双层级配置器,第一级配置器直接使用malloc().free(),第二级配置器则视情况采用不同的策略:当配置区块超过128bytes时,视为“足够大”,便 ...
- LOG算子
原文:http://blog.csdn.net/songzitea/article/details/12851079 背景引言 在博文差分近似图像导数算子之Laplace算子中,我们提到Laplace ...
- 404 Note Found 队 Alpha 6
目录 组员情况 组员1(组长):胡绪佩 组员2:胡青元 组员3:庄卉 组员4:家灿 组员5:凯琳 组员6:翟丹丹 组员7:何家伟 组员8:政演 组员9:黄鸿杰 组员10:刘一好 组员11:何宇恒 展示 ...
- 微服务—熔断器Hystrix
前言在微服务架构中,我们将系统拆分成了一个个的服务单元,各单元应用间通过服务注册与发现的方式互相依赖. 由于每个单元都在不同的进程中运行,依赖通过远程调用的方式执行,这样就有可能因为网络原因或是依赖服 ...
- C++笔记016:const 基础
原创笔记,转载请注明出处! 点击[关注],关注也是一种美德~ 笔记十六关于const关键字,在C语言和C++中const的表现是不同的. 先看一下const基础知识. 对const的初级理解:cons ...
- mysql/mariadb学习记录——limit
在mysql/mariadb 中可以用limit来限制查询的条数.例子如下: 1.limit后加一个参数 limit n: //选中查询所有结果中的前两条记录并返回 mysql> ; +---- ...
- 解决docker pull出现 error pulling image configuration: Get https://dseasb33srnrn.cloudfront.net······: net/http: TLS handshake timeout的问题
[root@MyCentos7 var]# docker pull javaUsing default tag: latestTrying to pull repository docker.io/l ...
- BootStrapValidate 简单使用
前阵子用了bootstrapvalidate写了一个登录验证,这里小记一笔 首先需要引入 bootstrapValidator.css //可不引入 jquery-2.1.0.min.js boots ...