none
c#新手问题 RRS feed

  • 问题

  • 我是c#新手,有几个弱弱的问题想问:

    1)  for (int i = 0; i <= 5; i++)

                {

                    textBox1.Text = textBox1.Text + i;

                }

    为什么textbox1最后得到的答案是012345而不是15?我用vb代码来运行上面的代码得出的答案是15.

     

    2)textBox1.Text=15在vb运行是没有问题,但在c#就不可以。一定要写textBox1.Text=”15“,这是正确的吗?

     

    3) bool isNum = double.TryParse(Str,out Num ); 这句代码是设么意思?

     

    4)我比较会vb.net,我想在在c#写代码会不会很困难和泰达的分别?


    • 已编辑 ckjason 2011年12月24日 4:39
    2011年12月24日 4:30

答案

  • 第一问:VB中“+”:如果是数值型字符串,优先做数字型的加法(如题目就变成1+2+3+4+5=15);如果是数值、字母混合,则自动转化成字符串类型;所以VB中建议用&连接,这样保证全部是字符串。字符串C#中,String和数值型相加被转化成数值型,所以是012345。C#必须使用Convert转化成int,然后累加

    Module A
     
        Sub main()
     
            Dim s As String
     
            For i As Integer = 1 To 5
                s = s & i
            Next
     
            Console.WriteLine(s)
        End Sub
    End Module

    第二问:是的,VB允许直接把数值型赋值给字符串,但是C#不可以。

    第三问:尝试把Str转化成double:如果成功,返回true,Num=那个Str的内容;如果失败,那么返回false,Num等于0.

    namespace A
    {
    	class Program
    	{
    		static void Main(string[] args)
    		{
                double num = 1.0;
                double.TryParse("abc"out num);
                Console.WriteLine(num);
    		}
    	}
    }

    第四问:不会,这是一个习惯的问题。在.NET平台上,VB.NET和C#已经是“对等”的。你不熟练可以慢慢使用从VB.NET转换到C#的工具进行学习。


       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    2011年12月24日 7:09
    版主
  • Wei_Dong回答的很详细完善了, 关于第4问的话这个要看个人习惯了, 如果一直接触的是VB, 那要转移到C#确实需要先适应一段时间, 而如果你之前就学习过C/C++或者Java, 你会发现C#语言学起来是很快的.
    等C#语言熟了, 真正用C#做起开发你会发现一切豁然开朗, 因为之前用VB.NET做开发使用.NET Framework, 在C#里面基本都是相同的. (用VB.NET和C#写的相同逻辑转换成的IL一般是完全相同的.)
    两种语言各有优势吧, 比如可能是因为习惯了C#, 我是觉得大括号在C#的各种使用让代码条理上看起来很清楚. 又如Linq在VB的一大优势XML literal, 使用这个来新建一个XDocument或者XElement直接可以用xml语法:
    Dim contact1 As XElement = 
        <contact>
          <name>Patrick Hines</name>
          <phone type="home">206-555-0144</phone>
          <phone type="work">425-555-0145</phone>
        </contact>
    

    而如果用C#来写的话就要使用XDocument, XElement, XComment, XAttribute等等的构造方法了. 
    Leo Liu [MSFT]
    MSDN Community Support | Feedback to us
    2011年12月29日 9:54
    版主

全部回复

  • 第一问:VB中“+”:如果是数值型字符串,优先做数字型的加法(如题目就变成1+2+3+4+5=15);如果是数值、字母混合,则自动转化成字符串类型;所以VB中建议用&连接,这样保证全部是字符串。字符串C#中,String和数值型相加被转化成数值型,所以是012345。C#必须使用Convert转化成int,然后累加

    Module A
     
        Sub main()
     
            Dim s As String
     
            For i As Integer = 1 To 5
                s = s & i
            Next
     
            Console.WriteLine(s)
        End Sub
    End Module

    第二问:是的,VB允许直接把数值型赋值给字符串,但是C#不可以。

    第三问:尝试把Str转化成double:如果成功,返回true,Num=那个Str的内容;如果失败,那么返回false,Num等于0.

    namespace A
    {
    	class Program
    	{
    		static void Main(string[] args)
    		{
                double num = 1.0;
                double.TryParse("abc"out num);
                Console.WriteLine(num);
    		}
    	}
    }

    第四问:不会,这是一个习惯的问题。在.NET平台上,VB.NET和C#已经是“对等”的。你不熟练可以慢慢使用从VB.NET转换到C#的工具进行学习。


       QQ我:讨论(Talk)
    下载MSDN桌面工具(Vista,Win7)
    我的博客园
    慈善点击,点击此处

    2011年12月24日 7:09
    版主
  • Wei_Dong回答的很详细完善了, 关于第4问的话这个要看个人习惯了, 如果一直接触的是VB, 那要转移到C#确实需要先适应一段时间, 而如果你之前就学习过C/C++或者Java, 你会发现C#语言学起来是很快的.
    等C#语言熟了, 真正用C#做起开发你会发现一切豁然开朗, 因为之前用VB.NET做开发使用.NET Framework, 在C#里面基本都是相同的. (用VB.NET和C#写的相同逻辑转换成的IL一般是完全相同的.)
    两种语言各有优势吧, 比如可能是因为习惯了C#, 我是觉得大括号在C#的各种使用让代码条理上看起来很清楚. 又如Linq在VB的一大优势XML literal, 使用这个来新建一个XDocument或者XElement直接可以用xml语法:
    Dim contact1 As XElement = 
        <contact>
          <name>Patrick Hines</name>
          <phone type="home">206-555-0144</phone>
          <phone type="work">425-555-0145</phone>
        </contact>
    

    而如果用C#来写的话就要使用XDocument, XElement, XComment, XAttribute等等的构造方法了. 
    Leo Liu [MSFT]
    MSDN Community Support | Feedback to us
    2011年12月29日 9:54
    版主