2014-05-07 95 views
-4

因此,我在星期一早上开始学习C#,过去两天我花了视频观看视频,现在我有几个观察结果,想知道我是否正确思考。Java到C#学习/清晰

我的过去是大约4年的大学水平的Java编程,所以如果需要任何解释并将其引用到Java项目,请随时与其建立心态链接。

我也开始了我的第一个“真正的”应用程序开发实习,所以他们让我在第一周自己学习东西,然后开始处理基于C#和.Net的项目。

任何将不胜感激!

  1. “as”操作符:根据我的理解,这基本上是一个演员。所以我可以说

    int a; 
    double b; 
    a as b; 
    

    这应该相当于(双)a,是否正确?

    object sender; 
    Label clickedLabel = sender as Label. 
    

    这将然后像(标签)发送方,发送方用作为一个对象,但现在铸造为一个标签,正确?

  2. 动态类型:我对此的理解是,它是一种“所有的东西!”类型,意思是动态d;可以用作int,double,object,string等。它可以应用于任何事物。是/否/种?

    dynamic d =5; 
    int a = d; 
    string b = d; 
    object c = d; 
    
  3. 如果这是正确的,这与拳击有什么不同?拳击只是一个“as”运算符/动态类型,但只能用于Object类型?

  4. 整数文字,这些文件的使用频率和使用频率如何?我看了他们的一段,他们看到很奇怪。我会做应用开发,所以如果这些都是有用的,请介绍一些日常用途请

    212 = decimal 
    215 = decimal unsigned 
    0xFccL = long hexidecimal (i think) 
    058 = Illegal as 8 is not an octal digit 
    05UU = Illegal as a suffix (the u for unsigned) is repeated 
    30u1 = unsigned long 
    30u = unsigned int 
    

    我只是困惑,这些地方将全部用于应用程序开发的类型。他们看到更多的像直接组装交互给我,但也许这是应用程序开发的东西(第一个“真正的”实习)的共同部分

  5. {#} syntax/WriteLine:所以我做了一些演示应用程序,他们使用语法如..

    Console.WriteLine("Radius: {0}, Area: {1}", r, areaCircle); 
    

    Console.WriteLine("{0}:{1}:{2}", e.Hour.ToString(), e.Minute.ToString(), e.Second.ToString()); 
    

    从什么,我意识到,{0},{1},{2},等..不知何故被拔值超出套(我不认为我是物理创建的)。 我不确定这是“叫”什么,所以我不知道如何谷歌。

    会有人介意指引我在正确的方向,因为我觉得这是一个非常有用的操作。

  6. 可空类型:从我这里了解到的情况是这样的表达式

    static int? d; 
    if (d.HasValue) 
    { 
    // something 
    } 
    

    不会抛出任何错误,因为这将是一个有效的互动,而在Java中,这会导致某种形式的编译错误。

    我相信你也可以设置为null的类型与实例,首先,如:

    int? d = 5; 
    

    这将是与上面相同,但作为标记,以一个null属性。

    我对这个问题,

    • 能“可空”来只有一些适用于所有类型或?

    • 你可以为d的实际值,但仍使支票返回NULL?既然你可以在一个空的属性标记的类型,我猜测,本身被视为“零”和“价值”的属性/相互独立的检查。这是一个正确还是错误的猜测? (如果需要,我可以尝试更好地解释)

  7. 字符串问题!

    • 我们在C#中使用字符串,因为我们会在Java中使用String吗? (大小写)

    • 当使用子,为什么这两个字符串返回不同的答案?

      string sub = input.Substring(0, 3); //returns index 0-2 
      
      string sub = input.Substring(3, 3); //returns index 3-6 
      
  8. 可能会添加更多...

    希望这是不是要求太多了,我只是想确保我学习C#作为最好的,我可以在接下来的几天。

    如果你们知道的一个新的应用开发应该知道什么方面有一些好文章/教程/ ECT在C#,请点我在那个方向。我也有一个PluralSight帐户,所以你也可以指导我参加他们的教程。

    谢谢

    -Austin

+1

你有没有触动任何书或只是看过一些视频?这些(以及更多)的问题都在学习者的书籍中讨论过(例如Troelsen的书)。 –

+3

你有很多问题,但是这样做不好。您应该分别询问每个问题,这样投票和接受答案将按照预期的方式工作。 – svick

+3

此外,你的一些“这应该工作,对吗?”样本实际上不会编译。在问这里之前,你应该先试着看看代码是否按照你期望的方式工作。 – svick

回答

0

,我会在我的答案用你的号码:

  1. 不,这不是相当于。使用“明确”或“C风格”剧组,如果转换失败将抛出一个无效的转换异常(比方说,如果你试图施放Labelint)。如果转换失败,使用as运算符将返回null,这就是为什么您不能将它与值类型一起使用。

  2. dynamic意味着它是一个运行时确定的类型,并且应当谨慎使用。 C#意图是强类型的。违反此风险自负。

  3. “拳击”是一个完全不同的动物,围绕着将一个值类型转换为参考类型。见Boxing and Unboxing

  4. 整数文字被一直使用。假设你想FF十六进制,你写0xFF。当然,你可以写255,但通过使用文字,含义更加清晰。

  5. 这隐含地呼叫String.Format,一个非常强大的功能。有关更多信息,请参阅MSDN

  6. 可为空仅适用于类型(引用类型始终为空)。它不是一个真正的“标签”,它只是意味着null值可以分配给变量。有关更多信息,请参阅is int? a value-type or a reference-type

  7. Stringstring完全一样的东西。你的编码风格决定你使用哪一种。要回答第二个项目符号,就是因为它是如何定义重载的。请参阅String.Substring

  8. 请将未来的问题作为单独的SO问题提出。通常不鼓励这样的多方参与者。

最后,还有很多很棒的C#资源! MSDN应该是一个起点,他们有一些非常好的文档。例如,顶级谷歌击中“拳击C#”指向链接的文章。

+1

“它有效地将值类型转换为引用类型。”不,它不。当涉及复制/分配/传递它们时,可空值类型的行为与引用类型的行为非常不同。 – svick

+0

非常感谢!我将从现在开始制作单个问题帖子。抱歉! – Austin

+0

@svick,那个陈述是误导性的,我为此道歉。我连接了一个适当的SO问题。 – BradleyDotNET