新[] {a,b}是什么意思和创造?

时间:2016-09-14 11:00:49

标签: c# new-operator

我找到了这段代码

python

并且可以猜测它的作用,但无法找到解释为什么可以省略类型定义def character(): print "What is your class?" print "1. The sneaky thief." print "2. The smarty wizard." print "3. The proletariat." charclass = raw_input("> ") if charclass == "1" or "thief": charclass = thief print "You are a thief!" elif charclass == "2" or "wizard": charclass = wizard print "You are a wizard!" elif charclass == "3" or "prole": charclass = prole print "You are a prole!" else: print "I'm sorry, I didn't get that" 的原因。 我查看了msdn c#new的解释,但那里太简单了。

4 个答案:

答案 0 :(得分:6)

  

您可以创建一个隐式类型数组,其中数组实例的类型是从数组初始值设定项中指定的元素推断出来的。任何隐式类型变量的规则也适用于隐式类型数组。

取自https://msdn.microsoft.com/en-us/library/bb384090.aspx

答案 1 :(得分:3)

  

我可以猜到它的作用

你是对的,它与new byte[] { a, b }

相同
  

我找不到可以省略类型定义byte[]的原因

可以省略的原因是ab都属于byte类型。编译器非常聪明,可以确定您是否打算创建一个byte的数组,因此它不会要求您明确指定类型。

Microsoft解释了此快捷方式here。这个想法类似于省略使用var的声明中的类型,当实际类型可以从初始化上下文推断时。

答案 2 :(得分:2)

可以省略类型定义,因为它可以从列表中对象的类型推断出来。

C#编译器在分析代码时做了很多工作,因为它编译时检查你编写的内容是否有效并将按照你的意图执行。你仍然可以犯错误,但(希望)比c或C ++等语言更少。

答案 3 :(得分:0)

,基本上你隐式地创建一个对象数组!