新足迹

 找回密码
 注册

精华好帖回顾

· 我在澳洲找工作 (2007-5-13) youyousandy · 装修前后大对比 (2007-11-23) maribel
· 全文完:内陆自驾游记 - 从天文之都Coonabarabran到Opal宝石镇Lightning Ridge(内附温泉小镇Moree攻略) (2018-10-11) 天朝屁民 · 不知道还赶的上活动不?——老鸭粉丝汤 (2007-7-3) 思思妈妈
Advertisement
Advertisement
查看: 3293|回复: 81

[IT] 请教C# 高手之一: 比较多个integer value [复制链接]

发表于 2010-6-1 19:29 |显示全部楼层
此文章由 hornsay 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 hornsay 所有!转贴必须注明作者、出处和本声明,并保持内容完整
要比较多个integer value时, Delphi 用in 来解决这个问题, 如:

procedure CheckNumber(Value : integer);
begin
  if (Value in [1,3,5,7]) then
    ShowMessage('You got right number')
  else
     ShowMessage('Wrong number');
end;

但是在C#里好像找不到相似的语法.
是不是只能用switch, case 来解决?
持不同股见者...
Advertisement
Advertisement

发表于 2010-6-1 20:07 |显示全部楼层
此文章由 coin_king 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 coin_king 所有!转贴必须注明作者、出处和本声明,并保持内容完整
switch (Value)
        {
            case 1:
            case 3:
            case 5:
            case 7:
               ShowMessage('You got right number');
            default:
                ShowMessage('Wrong number');
        }

或者

string s ="1,3,5,7";

if(s.contain(Value.ToString()))
{
ShowMessage('You got right number');
}
else
{
ShowMessage('Wrong number');
}

评分

参与人数 1积分 +3 收起 理由
hornsay + 3 谢谢奉献

查看全部评分

发表于 2010-6-1 20:54 |显示全部楼层

回复 2# 的帖子

此文章由 hornsay 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 hornsay 所有!转贴必须注明作者、出处和本声明,并保持内容完整
Tricky, tricky.

第一个方法好像不是很简捷,我更喜欢第二个方法。

C#在string handling上确实powerful, 这点Delphi没法和它比,虽然我很习惯也很喜欢Delphi的语句。

顺便问一下,enumerators 也可以转换成string 来比较?
持不同股见者...

发表于 2010-6-1 21:02 |显示全部楼层
此文章由 coin_king 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 coin_king 所有!转贴必须注明作者、出处和本声明,并保持内容完整
可以啊

发表于 2010-6-1 21:06 |显示全部楼层
此文章由 bzckbd 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 bzckbd 所有!转贴必须注明作者、出处和本声明,并保持内容完整
用C#  lambda expression 比较简洁.

  List<int> numbers = new List<int> { 1, 3,  5,  7 };
  Func<int, int> isRight = x => numbers.Find(n => n == x);

  if isRight(value) > 0)
{
ShowMessage('You got right number');
}
else
{
ShowMessage('Wrong number');
}

评分

参与人数 1积分 +3 收起 理由
hornsay + 3 谢谢奉献

查看全部评分

发表于 2010-6-1 21:47 |显示全部楼层
此文章由 helloall 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 helloall 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 hornsay 于 2010-6-1 18:29 发表
要比较多个integer value时, Delphi 用in 来解决这个问题, 如:

procedure CheckNumber(Value : integer);
begin
  if (Value in [1,3,5,7]) then
    ShowMessage('You got right number')
  else
     Show ...


感觉好像澳洲Delphi的用户不是很多,尤其是非悉尼地区,所以工作也不是很好找,不知道说的对不对。
Rhodesian
Advertisement
Advertisement

发表于 2010-6-1 22:07 |显示全部楼层

回复 5# 的帖子

此文章由 hornsay 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 hornsay 所有!转贴必须注明作者、出处和本声明,并保持内容完整
又学到了。非常有帮助。谢谢了。

发表于 2010-6-1 22:15 |显示全部楼层
此文章由 hornsay 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 hornsay 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 helloall 于 2010-6-1 20:47 发表


感觉好像澳洲Delphi的用户不是很多,尤其是非悉尼地区,所以工作也不是很好找,不知道说的对不对。


我从Delphi 2开始做,到现在也有10多年了,感觉Delphi在走下坡路,Borland把Delphi卖给不知名的小公司,我看不出Delphi有任何前途,尤其是.NET平台出来以后更是如此。不过如果只做Desktop application, 我还是很喜欢Delphi的。

现在公司开始向C#转,先从ASP.NET入手,所以得从头学C# 的syntax, 感到比较累,希望这一关能比较容易过。我想Object Oriented 这一方面都是一样的。
持不同股见者...

发表于 2010-6-1 22:22 |显示全部楼层
此文章由 rdcwayx 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 rdcwayx 所有!转贴必须注明作者、出处和本声明,并保持内容完整
Unix/Shell:

case CheckNumber in
   1|3|5|7) echo "You got right number" ;;
   *)  echo "Wrong number" ;;
esac

发表于 2010-6-1 22:24 |显示全部楼层
此文章由 jerryclark 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 jerryclark 所有!转贴必须注明作者、出处和本声明,并保持内容完整
不需要lambda,直接用List<T>.Contains()就行

List<int> numbers = new List<int> { 1, 3,  5,  7 };

if(numbers.Contains(x))
{
MessageBox.Show('You got right number');
}
else
{
MessageBox.Show('Wrong number');
}

[ 本帖最后由 jerryclark 于 2010-6-1 21:29 编辑 ]

评分

参与人数 1积分 +3 收起 理由
hornsay + 3 谢谢奉献

查看全部评分

发表于 2010-6-1 22:28 |显示全部楼层
此文章由 xxmplus 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 xxmplus 所有!转贴必须注明作者、出处和本声明,并保持内容完整
用linq也行,不过有点小题大做了,十楼的就足够了
Advertisement
Advertisement

发表于 2010-6-1 22:28 |显示全部楼层
此文章由 helloall 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 helloall 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 hornsay 于 2010-6-1 21:15 发表


我从Delphi 2开始做,到现在也有10多年了,感觉Delphi在走下坡路,Borland把Delphi卖给不知名的小公司,我看不出Delphi有任何前途,尤其是.NET平台出来以后更是如此。不过如果只做Desktop application, 我还是很 ...


知音啊,我也是从Delphi3开始做,但是发现澳洲Delphi的市场真小,公司最后一个Delphi软件也会在年底前消亡。转行又不知从何入手,郁闷啊!
Rhodesian

发表于 2010-6-1 22:48 |显示全部楼层
此文章由 木子 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 木子 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 rdcwayx 于 2010-6-1 21:22 发表
Unix/Shell:

case CheckNumber in
   1|3|5|7) echo "You got right number" ;;
   *)  echo "Wrong number" ;;
esac



In Perl:
$_ = 2;
/1|3|5|7/ ? print "right" : print "wrong";

评分

参与人数 1积分 +3 收起 理由
helloall + 3 好像这个帖子里面就PERL的没有人评论。

查看全部评分

发表于 2010-6-1 22:50 |显示全部楼层
此文章由 helloall 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 helloall 所有!转贴必须注明作者、出处和本声明,并保持内容完整
百家争鸣啊!

2010年度奖章获得者

发表于 2010-6-1 23:17 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
Pre-School at it's best

2010年度奖章获得者

发表于 2010-6-1 23:19 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
this is programming ABC. should get it done in uni or something.

i can give you a hint, best form in c# to do this - extension methods
Advertisement
Advertisement

发表于 2010-6-1 23:23 |显示全部楼层

回复 8# 的帖子

此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原来接触过几天delphi,感觉它的文档尤其不足,跟.net的msdn简直是天壤之别。

现在市场上能零星得出来个别职位,要求delphi & .net, 你就有很大的优势。

不过即使转到.net, winform也基本上是奄奄一息了,转web是大势所趋,对个人来说learning curve比较有挑战性。

发表于 2010-6-1 23:35 |显示全部楼层

回复 10# 的帖子

此文章由 hornsay 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 hornsay 所有!转贴必须注明作者、出处和本声明,并保持内容完整
谢谢,又是一个好方法。

大家所提供的方法,一下子让我学到了许多,一个问题,几个solutions, 这是书中所学不到的。太感谢大家了。

以后还会继续向大家请教。
持不同股见者...

2010年度奖章获得者

发表于 2010-6-1 23:40 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
好说。

不过类似abc问题,麻烦以后不要向高手请教了。

低手,平手往往能解释的更详尽一些。

发表于 2010-6-1 23:49 |显示全部楼层
此文章由 hornsay 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 hornsay 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 helloall 于 2010-6-1 21:28 发表


知音啊,我也是从Delphi3开始做,但是发现澳洲Delphi的市场真小,公司最后一个Delphi软件也会在年底前消亡。转行又不知从何入手,郁闷啊!


澳洲Delphi 市场确实很小,从招工广告就可以看出。Delphi 5以后就再走下坡路,Delphi 的report, TCP/IP, internet components 都是third party, 自己都没有好好研发过。

我们公司现在的产品就是用Delphi来开发的,已经用了10多年了,在市场上非常稳定,应该在它的行业中有一定地位。但现在许多小项目都是portable device  或者是 internet application, Delphi在这方面就没有什么优势,所以只能向C#转,转C#初期我估计会比较辛苦些,毕竟要从头学那些syntax, 好在C#的用户群很大,而且M$的online help 很强大。容易得到信息。 我估计新足迹里就有许多TX搞C#的。
持不同股见者...

发表于 2010-6-1 23:50 |显示全部楼层
此文章由 hornsay 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 hornsay 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 dalaohu 于 2010-6-1 22:40 发表
好说。

不过类似abc问题,麻烦以后不要向高手请教了。

低手,平手往往能解释的更详尽一些。


对我来说,教我abc的都是高手啦。
持不同股见者...
Advertisement
Advertisement

发表于 2010-6-1 23:54 |显示全部楼层
此文章由 hornsay 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 hornsay 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 乱码 于 2010-6-1 22:23 发表
原来接触过几天delphi,感觉它的文档尤其不足,跟.net的msdn简直是天壤之别。

现在市场上能零星得出来个别职位,要求delphi & .net, 你就有很大的优势。

不过即使转到.net, winform也基本上是奄奄一息了,转we ...


同感,只是因为做了时间长了,所以很少去找help, 真的要找,只能在borland 的news group 里找或询问。
持不同股见者...

2010年度奖章获得者

发表于 2010-6-2 00:09 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 liedong 于 2010-6-1 19:07 发表
switch (Value)
        {
            case 1:
            case 3:
            case 5:
            case 7:
               ShowMessage('You got right number');
            default:
               ...


绝对不可以,典型初学者做法。


string s ="1,3,5,7";

if(s.contain(Value.ToString()))
{
ShowMessage('You got right number');
}
else
{
ShowMessage('Wrong number');
}


错误。

发表于 2010-6-2 00:16 |显示全部楼层

回复 23# 的帖子

此文章由 hornsay 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 hornsay 所有!转贴必须注明作者、出处和本声明,并保持内容完整
全被否定了?

发表于 2010-6-2 01:06 |显示全部楼层

回复 24# 的帖子

此文章由 flyspirit 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 flyspirit 所有!转贴必须注明作者、出处和本声明,并保持内容完整
他逗你玩呢,10楼的方案解决你的问题足够了。

发表于 2010-6-2 01:34 |显示全部楼层
此文章由 ericlgq 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 ericlgq 所有!转贴必须注明作者、出处和本声明,并保持内容完整
用String的方法肯定是不对的。
比如说,列出来的数字是“12,13,14", 那 1, 2, 3, 4是right or wrong?:)
Advertisement
Advertisement

发表于 2010-6-2 01:36 |显示全部楼层
此文章由 未名湖 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 未名湖 所有!转贴必须注明作者、出处和本声明,并保持内容完整
我只学了3周的C#,只会这个,还不知道对不对
using System;
class MaxValue
{
        static void Main()
       
        {
                int x=1,y=3,z=5,w=7;
                int temp;
                if(x<=y)        
                {
                        temp=y;
                    if(temp<=z)  temp=z;
                        if(temp<=w) temp=w;
                }
                else                
                temp=x;
                Console.WriteLine("the max value is {0}",temp);
        }
}

发表于 2010-6-2 10:47 |显示全部楼层
此文章由 xxmplus 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 xxmplus 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 未名湖 于 2010-6-2 00:36 发表
我只学了3周的C#,只会这个,还不知道对不对
using System;
class MaxValue
{
        static void Main()
       
        {
                int x=1,y=3,z=5,w=7;
                int temp;
                if(x


你这个属于审题不清

发表于 2010-6-2 11:41 |显示全部楼层
此文章由 hornsay 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 hornsay 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 flyspirit 于 2010-6-2 00:06 发表
他逗你玩呢,10楼的方案解决你的问题足够了。


所以还是要把一串integer放到list里才能解决这个问题,是不是太麻烦了点?有没有更好的方法?
持不同股见者...

发表于 2010-6-2 11:49 |显示全部楼层
此文章由 cdfei 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 cdfei 所有!转贴必须注明作者、出处和本声明,并保持内容完整
List<int> a = new List<int>() { 1, 2, 3, 4 };
if (a.Contains(3))
    MessageBox.Show("you got it!");

这个应该就是最方便的了

[ 本帖最后由 cdfei 于 2010-6-2 10:50 编辑 ]

发表回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Advertisement
Advertisement
返回顶部