http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 6257|回复: 7

[其他] 挺简单的一个循环,怎么就出错呢?

[复制链接]
发表于 2013-10-19 23:28:05 | 显示全部楼层 |阅读模式
挺简单的一个循环,语法 我也没看出有什么错误。
老是给我报错。困惑不已。
VB.NET code都没问题。转成C#就出错。


[code=csharp] public Form1()        {
            InitializeComponent();
            dataGridView1.RowCount = 5;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            ///挨行进行判断,如果第一列中那一行没有数据,则填充数据
            ///比如,如果我手工在第一行第一列输入了数据,则我按按钮后应该自动在第二列输入数据

                for (int k = 0; k < this.dataGridView1.Rows.Count; k++)
                {
                    if (this.dataGridView1[0, k].Value.ToString() != string.Empty)
                    {

                        continue;
                    }

                    this.dataGridView1[0, k].Value = k;
                    break;
                }

        }[/code]

datagridview1.png


1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
 楼主| 发表于 2013-10-20 01:05:14 | 显示全部楼层
改成 [code=csharp]dataGridView1[0, k].Value != null
[/code]
这种判断方式就没问题

不解 为何tostring就不可以
发表于 2013-10-20 10:45:40 | 显示全部楼层
这个昨天不是解决了吗?

那个本来 是不是null都是string类型的!
 楼主| 发表于 2013-10-20 12:41:09 | 显示全部楼层
本帖最后由 aspirer 于 2013-10-20 12:44 编辑
970443232 发表于 2013-10-20 10:45
这个昨天不是解决了吗?

那个本来 是不是null都是string类型的!

解决归解决,解决只是说我的程序改成1楼的代码是可以通过了。

但是我原先那样写也没有逻辑和语法错啊。比较困惑,想知道原因。


发表于 2013-10-20 13:45:56 | 显示全部楼层
this.dataGridView1[0, k]    这个里面有没有值,没有是null, 和string.Empty是不一样的,empty有值只是为空而已
 楼主| 发表于 2013-10-20 14:01:28 | 显示全部楼层
本帖最后由 aspirer 于 2013-10-20 14:04 编辑
ミ星期⑧ 发表于 2013-10-20 13:45
this.dataGridView1[0, k]    这个里面有没有值,没有是null, 和string.Empty是不一样的,empty有值只是为 ...

当时是用IsNullOrEmpty这样

[code=csharp]private void button1_Click(object sender, EventArgs e)        {
            ///挨行进行判断,如果第一列中那一行没有数据,则填充数据
            ///比如,如果我手工在第一行第一列输入了数据,则我按按钮后应该自动在第二列输入数据

                for (int k = 0; k < this.dataGridView1.Rows.Count; ++k)
                {

                    string str = this.dataGridView1[0, k].Value.ToString();
                    if (!string.IsNullOrEmpty(str))
                    {

                        continue;
                    }


                    this.dataGridView1[0, k].Value = k;

                }


        }[/code]


也报错的!

据说它的底层实现是这样
string.IsNullOrEmpty 的底层实现只有一句代码:

public static bool IsNullOrEmpty(String value) {
    return (value == null || value.Length == 0);
}

发表于 2013-10-20 14:11:32 | 显示全部楼层
aspirer 发表于 2013-10-20 14:01
当时是用IsNullOrEmpty这样

我想应该是你的dataGridView1[0, k]没有填充任何值,dataGridView1[0, k].Value = null,   null 不能ToString()吧,你可以定义一个null值ToString()一下试试
 楼主| 发表于 2013-10-20 21:13:56 | 显示全部楼层
ミ星期⑧ 发表于 2013-10-20 14:11
我想应该是你的dataGridView1[0, k]没有填充任何值,dataGridView1[0, k].Value = null,   null 不能ToSt ...

嗯……。你这么解释我就明白了! {:soso_e179:}

原来 string 可以为空
但是空(null) 却不能 ToString()


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

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-11-23 09:50

© 2014-2021

快速回复 返回顶部 返回列表