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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 申延超 中级黑马   /  2012-7-21 13:01  /  2824 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我要判断各月份有多少天,不用switch  case, 用if的话


            Console.WriteLine("请输入月份:");
            int month = Convert.ToInt32(Console.ReadLine());
                   if(month==1)
                       为啥不能写成   if(month==1,3,5,7,10,12)
(就是说直接判断month的值为1,3,5,7,10,12中的某一个,)
而不用写成  if(month=1)
                       {
                       }
                  if(month=2)
                      {
                      }
                  if(month=3)
                      {
                      }
            
                    

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

12 个回复

倒序浏览
只能说语法就是这么规定的没啥为什么,==是二元运算符只能带有两个参数。
或许这么说更明白点,当你对==符号进行运算符重载时,参数的类型必须与声明该运算符的类或结构的类型相同也就是如下:

  1. public static Complex operator ==(Complex c1, Complex c2)
复制代码
这就说明了C#对其的定义就是==右边只能有一个参数,而且我知道的所有语言都是只能进行二元运算

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
==为关系运算符 关系操作符都是二元运算符 顾名思义只能是两个表达式之间的比较  返回值为 true,false  你写的 int 型 的month  和 (1,2,3)明显不是两个表达式之间的比较

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
哦  忘记二元运算符这回事了  ,谢谢回复
回复 使用道具 举报
=表示的是赋值运算符
==表示的关系运算符

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
楼上几位该说的都说了
一个是赋值,一个是关系。
性质就不一样。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
想法是好,但是要想到运算速度的关系,虽然微不足道,还有代码的从简性,你或者可以写成if(month==1||month==2||......||month==12),这种方法比一个一个判断要好些。但是也不可取。这样代码阅读起来太长费劲。最简单的还是一次性写完。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
当用month=1时,意思是将1赋值给month;
用month==1时,才是比较month的值是不是等于1;
当month的值为1时,表达式(month==1)的值为true,month不为1,表达式的值为false。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
正是因为这样的原因,开发人员也有和楼主一样的想法,所以才有swith.....case....的问世啊!  多值判断,如果不想用if,那就用switch...case最合适。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
if(month==1,3,5,7,10,12), 哪有这种想当然的语法?

可以这样写:
if (new []{1,3,5,7,8,10,12}.Contains(month))

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
我比较喜欢switch 哈哈 结构多清晰啊

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
=是赋值运算符,=左边必须是个变量而不能是表达式或者常量。=右边则没有这些限制。
==是二元关系运算符,相当于数学上的等号 判断左右两边的值是否相等,返回的是布尔类型的值为真或者假、

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
==是个二元运算符,所以只能一个一个来判断,如果写成 if(month==1,3,5,7,10,12)是违背程序规定的

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马