A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 何荣智 黑马帝   /  2011-11-3 16:40  /  3816 人查看  /  11 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

不知道 在实际的开发中  它的用途到底是什么啊

11 个回复

正序浏览
C#中只有一个三目运算符——条件运算符。
格式如下:
条件 ? i表达式1 : i表达式2;
条件成立执行表达式1,否则2;
是一种实现if语句的简短方式。

实际用途也很简单,为其他变量赋值;

type data=contion?expression1:expression2;
回复 使用道具 举报
liucaifu 黑马帝 2011-11-4 11:40:14
11#
表达式?表达式1:表达式2,当表达式为true时,那么表达式的值就是表达式1,否则就是表达式2。
回复 使用道具 举报
经睿 黑马帝 2011-11-4 10:28:02
10#
<表达式1>?<表达式2>:<表达式3>;
"?"运算符的含义是: 先求表达式1的值, 如果为真, 则执行表达式2,并返回表达式2的结果 ; 如果表达式1的值为假, 则执行表达式3 ,并返回表达式3的结果.
举个例子:
  1.     int a=2;
  2.   int c=3;
  3.   int b=(a>c)?2:3;
  4. //输出b, 结果是b为3
复制代码
回复 使用道具 举报
章坚 黑马帝 2011-11-4 09:26:57
9#
逻辑就是 IF(){}  ELSE{}  只是将复杂的表达式简化
表达式1?表达式2:表达式3
简单来说就是这样
if(表达式1)
{
      表达式2;
}else
{
表达式3;
}
就是 如果表达式1的判断为真 则运行表达式2  否则运行表达式3
回复 使用道具 举报
三目运算符在原理上基本都可以转化为  if{....}else{....}语句,但是在实际的开发过程中,两者是可以用在不同的地方的。
比如: 有一个实体类叫  Person ,里面有一些相关的属性如下:
public string Name {get;set;}

public string Location{get;set;}
public int? Age{get;set;}
public string PhoneNumber{get;set;}
public string EmailAddress{get;set;}
等等


假如你在开发一个应用系统,需要根据注册用户知道获得用户的相关信息,那么用户在你的网站注册的时候,你可以new一个 Person,如下:
当用户在注册页面写好了各种资料之后,点击“确定注册”按钮,那么方法中就可以抓取到不同的信息插入到数据库不同的表中的不同字段中,当然前提是你做好了这些接口
..........
private void AddNewUser(...... e, ........)
{
        Person person = new Person()
        {
              Name = string.IsNullorEmpty(txtUserName.text) ? txtUserName.text : string.empty,
              Location = string.IsNullorEmpty(cbxLocation.selecteditem) ? cbxLocation.selecteditem : string.empty,
              Age= if(cbxAge.selecteditem.selecteditem != null) ? convertToInt32( cbxLocation.selecteditem) : null,
              ........
        };

到此为止只和这个注册的人相关,下面接着调用BLL层的方法将这个人person作为参数传到bll里面处理后插入到数据库,这里不说了
}


就像上面的,这个时候用到三目运算符就比较合适,代码看起来非常简洁明了。可以很容易的做各种验证和判断。在new的这一个Person当中,你就可以支专注于这个人的实例上面,而不去被其他的代码所打扰,尤其是在你的页面代码达到几千行的时候,你可以很快的查找问题。

当然,其实上面的代码可以改写为 if{....}else{....}的形式,那样虽然没有错误,但是会让页面代码看起来很乱,看下面:
Person person = new Person();
if(string.IsNullorEmpty(txtUserName.text) == false)
{
       person.Name = txtUserName.text;
}
else
{
        ......
}


if(string.IsNullorEmpty(cbxLocation.selecteditem))
{
person.Location = cbxLocation.selecteditem.tostring();
}
else
{
......
}


。。。。。。
。。。。。。

上面仅仅才写了person两个属性,就写了那么一大堆代码了,你看的爽不爽啊。优点之一就出来了。

当然,这是我理解的其中之一,可能还有其他的用处,你可以参考一下


(上面的示例代码是手写的,可能有不对的地方,凭着印象写的,仅仅为了解释你说的问题)



回复 使用道具 举报
陈涛 黑马帝 2011-11-3 18:50:00
7#
表达式1?表达式2:表达式3
如果1为真则执行2,为假执行3
回复 使用道具 举报
简洁方便省了代码~~不然你还得if else
回复 使用道具 举报
目前我~才疏学浅~只知道一个?:
表达式1?表达式2:表达式3
如果1为真则执行2,为假执行3
比如:
Console.WriteLine("1比2{0}",(1>2)?"大":"小");
这将输出"1比2小"
回复 使用道具 举报
看起来比较简洁
回复 使用道具 举报
跟 if(){}else{} 一样的功能
回复 使用道具 举报
是三目运算符吧?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马