我发现这个代码new [] {a,b}是什么意思和创建?
Stream foo()
{
...
return new MemoryStream(new[] { a, b });
}
,可以猜测它做什么,却找不到一个解释,为什么类型定义byte[]
可以省略。 我看着msdn c#new解释,但那里太简单了。
我发现这个代码new [] {a,b}是什么意思和创建?
Stream foo()
{
...
return new MemoryStream(new[] { a, b });
}
,可以猜测它做什么,却找不到一个解释,为什么类型定义byte[]
可以省略。 我看着msdn c#new解释,但那里太简单了。
您可以创建一个隐式类型的数组,其中根据数组初始值设定项中指定的元素来推断数组实例的类型。任何隐式类型变量的规则也适用于隐式类型数组。
我能猜出它
你是正确的,这是一样的new byte[] { a, b }
我无法找到一个解释,为什么类型定义
byte[]
可以省略
可以省略的原因是a
和b
类型为byte
。编译器足够聪明,可以发现你打算创建一个数组byte
,所以它不要求你明确指定类型。
微软解释了这个快捷方式here。这个想法类似于省略使用var
的声明中的类型,实际类型可以从初始化上下文中推断出来。
类型定义可以省略,因为它可以从列表中的对象类型推断出来。
C#编译器在编译代码时会执行大量的工作,以检查您编写的内容是否有效并将按照您的意图执行。你仍然可以犯错误,但是(希望)比c或C++等语言更少。
摘自它创建包含两个字节的'MemoryStream'实例:'A'和'B' –
类型阵列的可以从它们是两个字节的参数中导出的,所以数组是一个'Byte []'。这是[隐式类型数组](https://msdn.microsoft.com/en-us/library/bb384090.aspx) –
http://stackoverflow.com/questions/5678216/all-possible-c-sharp-数组初始化语法 –