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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 吕柳根 中级黑马   /  2013-6-26 23:32  /  1506 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

question:""" " 还有一个空格两个空格的区别,还有是null的区别,还有就是按tab键,还有回车??????????几个搞得头大
这七个怎么区分,我们常说的不能为空,是不能为""还是不能为null ,还是什么????
求高手解答,谢谢!

评分

参与人数 1技术分 +1 收起 理由
杞文明 + 1

查看全部评分

4 个回复

倒序浏览

回帖奖励 +1

关于""、" "、一个空格、两个空格、null、tab可以放在一个字符串中(回车键暂时还不知道该怎么办),然后转换成字符数组的方式来区分。
     string str1 = null;
            try
            {
                char[] myChar1 = str1.ToCharArray();
                Console.Write(str1);
                Console.WriteLine(myChar1.Length);
            }
            catch {
                Console.WriteLine("str1的初始值为NULl");
            }

            Console.ReadKey();
            string str2 = "";
            char[] myChar2 = str2.ToCharArray();
            Console.Write(str2);
            Console.WriteLine(myChar2.Length);
            Console.ReadKey();
            string str3 =" ";
            char[] myChar3 = str3.ToCharArray();
            Console.Write(str3);
            Console.WriteLine(myChar3.Length);
            Console.ReadKey();
            string str4 = "  ";
            char[] myChar4 = str4.ToCharArray();
            Console.WriteLine(str4);
            Console.WriteLine(myChar4.Length);
            Console.ReadKey();
            string str5 = "    ";
            char[] myChar5 = str5.ToCharArray();
            Console.WriteLine(str5);
            Console.WriteLine(myChar5.Length);
            Console.ReadKey();

        }
我们常说的不能为空是指null.比如一个箱子,里面什么都没有,但是存在的。而null就表示连这个箱子都没有。
不知道理解的对否,如理解有误,望大神批评指正。
回复 使用道具 举报
本帖最后由 leayon 于 2013-6-27 14:42 编辑

我们常说的不能为空指的是不能为null,
如:string str1 = "";       string str2 = null;   在这两个表达式里面,str1表示一个长度为0的字符串,str2表示这个变量里面什么东西都没有。
      string str3 = " ";表示str3是一个由一个空格字符组成的长度为1的字符串。同理,两个空格就表示由两个空格字符组成的长度为2的字符串,它们两个是不一样的,你可以写代码用equals验证一下它们两个是否相等。
      tab键只是表示一个制表符,它表示8个空格字符,使光标由第一个位置跳到第9个位置,在输出语句中,通常用"\t"来表示。
      回车键就是换行显示啊。
楼主可按照下面的代码运行一下就明白了。
static void Main(string[] args)
        {
            string str1 = " ";             //一个空格组成的字符串
            string str2 = "  ";          //两个空格组成的字符串
            string str3 = "\ta";             //一个制表符加一个字符a组成的字符串
            string str4 = "        a";         //八个空格加一个字符a组成的字符串
            Console.WriteLine(str1.Equals(str2));
            Console.WriteLine(str3);            Console.WriteLine(str4);
            Console.WriteLine(str3.Equals(str4));
            Console.ReadKey();
        }
打印输出的语句如下:
False
        a
        a
False

可以看到如果字符串中有"\t",那么它只在  用string.Format()格式化  或  输出这个字符串  的时候才表示下一个制表位,如果在程序中拿这个字符串进行其它的操作,那么它只是 一个普通的字符串。
换行符"\n"也同样如此。

回复 使用道具 举报
leayon 发表于 2013-6-27 14:40
我们常说的不能为空指的是不能为null,
如:string str1 = "";       string str2 = null;   在这两个表达 ...

很精简!貌似懂了
回复 使用道具 举报
谢谢,学习了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马