先foreach再if,还是先if再foreach呢?

时间:2022-08-30 14:14:45
先foreach:每个循环都得判断一遍,影响效率
先if:设置DefaultValue就得写两遍,而且这里可能会有更多代码
这种的应该怎么弄呢


            DataTable dt = new DataTable();
            foreach (KVPair kv in items)
            {
                if (validType == "Key")
                {
                    dt.Columns.Add(kv.Key, typeof(decimal));
                }
                else
                {
                    dt.Columns.Add(kv.Value, typeof(decimal));
                }
                dt.Columns[dt.Columns.Count - 1].DefaultValue = 0;
            }

            if (validType == "Key")
            {
                foreach (KVPair kv in items)
                {
                    dt.Columns.Add(kv.Key, typeof(decimal));
                    dt.Columns[dt.Columns.Count - 1].DefaultValue = 0;
                }
            }
            else
            {
                foreach (KVPair kv in items)
                {
                    dt.Columns.Add(kv.Value, typeof(decimal));
                    dt.Columns[dt.Columns.Count - 1].DefaultValue = 0;
                }
            }

24 个解决方案

#1


建议写第二种 你完全可以把foeach写成一个方法 

#2


if (validType == "Key")
            {
                foreach (KVPair kv in items)
                {
                    dt.Columns.Add(kv.Key, typeof(decimal));
                    dt.Columns[dt.Columns.Count - 1].DefaultValue = 0;
                }
            }
            else
            {
                foreach (KVPair kv in items)
                {
                    dt.Columns.Add(kv.Value, typeof(decimal));
                    dt.Columns[dt.Columns.Count - 1].DefaultValue = 0;
                }
            }
没看出区别

#3


现在双核时代像这样的程序不会影响效率了,
想怎么写,就怎么写!

#4


引用 1 楼 kadeer007 的回复:
建议写第二种 你完全可以把foeach写成一个方法
你完全可以把foeach写成一个方法

#5


不管什么时代,针对你目前的这种应用场景来讲先if后foreach效率会高一些。

#6


第二种效率高一点点,但可读性下降。

除非items里数量非常大(例如百万级),否则怎么舒服怎么写。

#7


引用 3 楼 ohkuy 的回复:
现在双核时代像这样的程序不会影响效率了,
想怎么写,就怎么写!


单核也一样写。

#8


这就像我们绿色环保一样,你少做一次电梯可能没什么明显的影响,但这却有本质上的区别。就像我们耳熟能详的“莫以善小而不为,莫以恶小而为之”,系统的性能就是在这样不知不觉的小细节中降低的。

#9


性能 ,配好的电脑一切搞定。

#10


循环次数不多的话,这点计算基本对速度没影响的

#11


目测我的肉眼看不出来差距。。

#12


写个方法就行了。。。效率差不多。。不放心可以测试一下。。。
  
=============================================================================
嗒哒滴嗒哒!欢迎使用CSDN论坛专用阅读器:http://download.csdn.net/source/3353776

#13


个人更喜欢第一种,效率来讲,肯定是第二种了。明摆的~~~~~不过要从影响效率来讲,起码是百万级别的

#14


数据量不是很大,差别不是很大

#15


第二种.

#16


现在机子不在乎这点性能

#17


我喜欢第一种,行数少点

#18


效率来讲,肯定是第二种了

#19


推荐第二种,代码多的话,就需要封装成AddKey和AddValue方法再写更多的逻辑了,易于扩展。
第一种,耦合度高些

#20


个人认为。。。。。把foreach写成一个方法比较好

#21


这又不是C,这么追求效率干嘛。

#22


引用楼主 phommy 的回复:
先foreach:每个循环都得判断一遍,影响效率
先if:设置DefaultValue就得写两遍,而且这里可能会有更多代码
这种的应该怎么弄呢


C# code

            DataTable dt = new DataTable();
            foreach (KVPair kv in items)
            {
        ……
是啊

#23


个人觉得第二种比较好,但总感觉不用太过执着了(可能我个人对这方面有点随意呵呵)

#24


引用 8 楼 bearben2010 的回复:
这就像我们绿色环保一样,你少做一次电梯可能没什么明显的影响,但这却有本质上的区别。就像我们耳熟能详的“莫以善小而不为,莫以恶小而为之”,系统的性能就是在这样不知不觉的小细节中降低的。

别动不动就绿色环保低碳,这些东西关我们P民什么事啊

#1


建议写第二种 你完全可以把foeach写成一个方法 

#2


if (validType == "Key")
            {
                foreach (KVPair kv in items)
                {
                    dt.Columns.Add(kv.Key, typeof(decimal));
                    dt.Columns[dt.Columns.Count - 1].DefaultValue = 0;
                }
            }
            else
            {
                foreach (KVPair kv in items)
                {
                    dt.Columns.Add(kv.Value, typeof(decimal));
                    dt.Columns[dt.Columns.Count - 1].DefaultValue = 0;
                }
            }
没看出区别

#3


现在双核时代像这样的程序不会影响效率了,
想怎么写,就怎么写!

#4


引用 1 楼 kadeer007 的回复:
建议写第二种 你完全可以把foeach写成一个方法
你完全可以把foeach写成一个方法

#5


不管什么时代,针对你目前的这种应用场景来讲先if后foreach效率会高一些。

#6


第二种效率高一点点,但可读性下降。

除非items里数量非常大(例如百万级),否则怎么舒服怎么写。

#7


引用 3 楼 ohkuy 的回复:
现在双核时代像这样的程序不会影响效率了,
想怎么写,就怎么写!


单核也一样写。

#8


这就像我们绿色环保一样,你少做一次电梯可能没什么明显的影响,但这却有本质上的区别。就像我们耳熟能详的“莫以善小而不为,莫以恶小而为之”,系统的性能就是在这样不知不觉的小细节中降低的。

#9


性能 ,配好的电脑一切搞定。

#10


循环次数不多的话,这点计算基本对速度没影响的

#11


目测我的肉眼看不出来差距。。

#12


写个方法就行了。。。效率差不多。。不放心可以测试一下。。。
  
=============================================================================
嗒哒滴嗒哒!欢迎使用CSDN论坛专用阅读器:http://download.csdn.net/source/3353776

#13


个人更喜欢第一种,效率来讲,肯定是第二种了。明摆的~~~~~不过要从影响效率来讲,起码是百万级别的

#14


数据量不是很大,差别不是很大

#15


第二种.

#16


现在机子不在乎这点性能

#17


我喜欢第一种,行数少点

#18


效率来讲,肯定是第二种了

#19


推荐第二种,代码多的话,就需要封装成AddKey和AddValue方法再写更多的逻辑了,易于扩展。
第一种,耦合度高些

#20


个人认为。。。。。把foreach写成一个方法比较好

#21


这又不是C,这么追求效率干嘛。

#22


引用楼主 phommy 的回复:
先foreach:每个循环都得判断一遍,影响效率
先if:设置DefaultValue就得写两遍,而且这里可能会有更多代码
这种的应该怎么弄呢


C# code

            DataTable dt = new DataTable();
            foreach (KVPair kv in items)
            {
        ……
是啊

#23


个人觉得第二种比较好,但总感觉不用太过执着了(可能我个人对这方面有点随意呵呵)

#24


引用 8 楼 bearben2010 的回复:
这就像我们绿色环保一样,你少做一次电梯可能没什么明显的影响,但这却有本质上的区别。就像我们耳熟能详的“莫以善小而不为,莫以恶小而为之”,系统的性能就是在这样不知不觉的小细节中降低的。

别动不动就绿色环保低碳,这些东西关我们P民什么事啊