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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 颜晓峰 于 2013-3-11 14:34 编辑

我在WPF项目里建了一个类Tools

Tools类中有几个静态变量:
public class Tools
    {
        public static int ckb_ischecked;
        public static string s_userName;
        public static string s_psd;

    }
我在其他地方调用,第一次如此调用:
string s = Tools.s_userName;

OK,妥妥的,没问题;
然后我希望能忽略其中的空白字符,于是
s.Trim();

悲剧了,出现提示:

请问这是怎么回事呢,静态变量不是可以直接使用么,就像string s = Tools.s_userName;一样,为什么加了个Trim();就不行呢?
静态变量难道只能赋值用?如果我在这里实例化的话,其中的内容不都没了?

评分

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

查看全部评分

5 个回复

倒序浏览
是不是哪里粗心了?以下这段简单代码运行完全正确,楼主可以试下

截图00.jpg (36.32 KB, 下载次数: 43)

截图00.jpg

评分

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

查看全部评分

回复 使用道具 举报
本帖最后由 颜晓峰 于 2013-3-8 21:02 编辑
whs_nk 发表于 2013-3-8 15:49
是不是哪里粗心了?以下这段简单代码运行完全正确,楼主可以试下


我的类中userName不能像你一样直接赋值,因为这个值有很多可能,你直接赋值就是格式化了。不会出现我的问题。你如果按我一样的方式试一试就会有问题的。
回复 使用道具 举报
我知道问题所在了!之所以会出现该提示,并不是没有实例化的问题,而是Tools.s_userName的值为null。就如疑难解答提示中的第二条一样。静态变量不需要实例化,出现该问题就是值NULL的问题了,null不能赋值给string变量,自然就出错了!谢谢大家,弄了半天,终于弄清楚了。。。不容易啊,求加分分~~
回复 使用道具 举报
public class Tools
    {
        public static int ckb_ischecked;
        public static string s_userName; //在这里只是声明了string类型的变量,并没有给它在内存中分配空间,所以是空引用(null)
        public static string s_psd;
    }
我在其他地方调用,第一次如此调用:
string s = Tools.s_userName;//s=null ;
OK,妥妥的,没问题;
然后我希望能忽略其中的空白字符,于是
s.Trim(); // null .....异常


评分

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

查看全部评分

回复 使用道具 举报
我知道你那个UserName是程序中赋值的,出现上面的原因是,UserName为null,说明你程序还没运行到赋值代码就已经给其他变量赋值了,这是你设计思路上有些问题
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马