以下问题都是对于怎样成为一个C#高手问的,我主要是想开发对于桌面应用或网络应用(是C#而不是ASP)的程序
第一个,学习方法上的:
数学与外语,我想如果要用到很深的数学的话那就是关于一些核心的算法问题了,我还没到那个水平
我想问的是关于外语,要多少水平才够,我只有初中水平,好在读初中的时候外语还行,每次都能到90分以上,所以现在有生词的时候查查字典就能明白了,其它很多都能看得懂,这在我学习ASP.NET过程中没什么阻碍,学了三个月,对于BBS 留言簿,聊天室,小的电子商务程序也还能做,安全性能方面也还算差不多吧,现在学C#了,虽然有生词查查字典也能得到解决,但这很显然不够,网上有好多资料全是外文的,我不想在靠翻译软件了,我必须在看到外文资料的时候就能全明白,而且我也很想学好外语,一是我想学,二是我想成为C#程序高手,所以望高手们说说我要想精通C#的话要多少外语水平才够,有没有好的书向我推荐?望大家向我推荐几本学习外语与C#的书(一定要自已看过的哈,这样才能有准确性,文中外语是指英语)另外要是说一说学习C#的一些方法就更好了,当然一样要确保你用过,就样更有准确性,(我这里有个搞软件的向我极力推荐一本书关于C#的,我问他看过没有,他说没有,我差点没晕过去,他看都没看过怎么知道好????????)
二是程序上的:(略了一些..)
先看代码 test()
{
DataTable tabel;
int num=tabel.Rows.Count+1;
DataRow row=table.NewRow();
while(true)
{
try
{
row["test"]=num.tostring(...);
table.row.add(row);
break;
}
catch
{
num++;
continue;
}
}
}
我没明白为什么要用while而不直接用try catch,它的意思是不是加入新行成功后就跳出来,有异常的话就进行下一次加入新行的动作?但我想不明白的就是要是第一次有异常那怎么知道下一次没有,要是一真有异常的话那不就是死循环?

解决方案 »

  1.   

    要是一真有异常的话那不就是死循环?有异常它会自动跳出While语句,去执行外面的for循环.
      

  2.   

    catch里不是continue吗,能不能说明白点啊
      

  3.   

    没看过书,如果说有,只看过vs自带的Language Specification.doc
      

  4.   

    test()
    {
    DataTable tabel;
    int num=tabel.Rows.Count+1;
    DataRow row=table.NewRow();
    while(true)
    {
    try
    {
    row["test"]=num.tostring(...);
    table.row.add(row);//应该时table.rows.add(row);
    break;//新航加入成功,退出.
    }
    catch
    {
    num++; //新航加入失败,num++;
    continue;//继续.
    }
    }
    }
    //你的table的test列应该事唯一的吧??当这列插入相同的值时,就会异常,,
    //这时就让num++, 如果还是异常,继续加,否则,table新真一个row. 
    //此时,无异常,,break,退出循环. 
    //不会死循环.
      

  5.   

    学外语,可以多上上codeproject.com
      

  6.   

    要是一真有异常的话那不就是死循环?如果说,所有的num都用过了,那就会死循环,,
    但是,这在你的运行程序中可能吗?
    你的table航数必须达到int.MaxValue-int.MinValue+1才可能.
    不必考虑这样的问题.
      

  7.   

    代码真有死循环的可能.如果下面两行有与num无关的错误就会进入死循环.
    row["test"]=num.tostring(...);
    table.row.add(row);比如说row没有test列,table中还有其他不能为空的列,或是有约束等.
      

  8.   

    test()
    {
    DataTable table;
    int num=table.Rows.Count+1;
    DataRow row=table.NewRow();
    while(true)
    {
    try
    {
    row["test"]=num.tostring(...);
    table.row.add(row);
    break;
    }
    catch
    {
    num++;
    continue;
    }
    }
    }这个程序有点意思,作者巧妙的利用异常来给 "test" 加一个唯一增长ID
    想法不错
      

  9.   

    但出效率的角度来看,可能会比较低: 
    例:   你总有n条记录
       如果第一条记录为 n1 ,且n1["test"] = n;
       并且n1++ ["test"] = n++;   哪么你插入一条新记录,要得到这个唯的增长值,你需要循环n次才能插入,试想 n1["test"] = n > 100000 ,会发生什么??  没有测试过,纯个人观点--- 呵呵