惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

G
Google Developers Blog
F
Fortinet All Blogs
Microsoft Azure Blog
Microsoft Azure Blog
腾讯CDC
Vercel News
Vercel News
Recent Announcements
Recent Announcements
博客园 - Franky
小众软件
小众软件
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
The Cloudflare Blog
宝玉的分享
宝玉的分享
I
InfoQ
博客园 - 聂微东
Jina AI
Jina AI
J
Java Code Geeks
V
V2EX
U
Unit 42
Stack Overflow Blog
Stack Overflow Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
阮一峰的网络日志
阮一峰的网络日志
L
LangChain Blog
T
The Blog of Author Tim Ferriss
量子位

博客园 - Lucky Jack

在C#中展示嵌入的RTF文件 SQL进行排序、分组、统计的10个新技巧 select into 和 insert into select的区别 Convert的妙用 DataGridView中回车键的妙用 如何去除C#Strings中的空格? Format String for XML Value - Lucky Jack 如何改变字体大小呢? 如何改变字体风格? C# String小技巧 如何避免按回车键时的嗡鸣声? - Lucky Jack - 博客园 如何嵌入图片资源? Lookupedit使用小记 如何优雅的编程? 文件监视器( FileSystemWatcher) 类的使用 - Lucky Jack 反射也可以这样? - Lucky Jack - 博客园 浅谈对象的初始化顺序 经典的属性设置! 经典sql
也谈String.IsNullOrEmpty
Lucky Jack · 2008-02-21 · via 博客园 - Lucky Jack

今天在浏览DevTopics的博客时,发现一篇介绍String的随笔,介绍的是判断一个String变量是否为空时,String的一个方法和一个属性之间的比较,给一个 string变量 's', 下面那个表达式更快?

1.  String.IsNullOrEmpty( s ) 
2.  s == null || s.Length == 0

如果你猜第二个,那么你是对的. 它将比String.IsNullOrEmpty方法快15%,但这种也是以百万分之一秒来衡量的!
这里有一个简单的例子来比较2种方式:

using System;

namespace StringNullEmpty
{
    
class Program
    
{
        
static void Main( string[] args )
        
{
            
long loop = 100000000;
            
string s = null;
            
long option = 0;
            
long empties1 = 0;
            
long empties2 = 0;

            DateTime time1 
= DateTime.Now;

            
for (long i = 0; i < loop; i++)
            
{
                option 
= i % 4;
                
switch (option)
                
{
                    
case 0:
                        s 
= null;
                        
break;
                    
case 1:
                        s 
= String.Empty;
                        
break;
                    
case 2:
                        s 
= "H";
                        
break;
                    
case 3:
                        s 
= "HI";
                        
break;
                }

                
if (String.IsNullOrEmpty( s ))
                    empties1
++;
            }


            DateTime time2 
= DateTime.Now;

            
for (long i = 0; i < loop; i++)
            
{
                option 
= i % 4;
                
switch (option)
                
{
                    
case 0:
                        s 
= null;
                        
break;
                    
case 1:
                        s 
= String.Empty;
                        
break;
                    
case 2:
                        s 
= "H";
                        
break;
                    
case 3:
                        s 
= "HI";
                        
break;
                }

                
if (s == null || s.Length == 0)
                    empties2
++;
            }


            DateTime time3 
= DateTime.Now;

            TimeSpan span1 
= time2.Subtract( time1 );
            TimeSpan span2 
= time3.Subtract( time2 );
            Console.WriteLine( 
"(String.IsNullOrEmpty( s )): Time={0} Empties={1}",
                span1, empties1 );
            Console.WriteLine( 
"(s == null || s.Length == 0): Time={0} Empties={1}",
                span2, empties2 );
            Console.ReadLine();
        }

    }

}
下面是结果:
(String.IsNullOrEmpty( s )): Time=00:00:06.8437500 Empties=50000000
(s == null || s.Length == 0): Time=00:00:05.9218750 Empties=50000000