C#使用new []

前端之家收集整理的这篇文章主要介绍了C#使用new []前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个关于使用new []的问题.

想象一下:

Object.SomeProperty = new[] {"string1","string2"};

SomeProperty需要一个字符串数组.

我知道这段代码会起作用.但我想知道它在幕后做了什么. new []是否构成了类对象的实例,而在SomeProperty中,它会自动将其转换为字符串对象吗?

谢谢

解决方法

好的,这里仍然有点混乱.

正在进行的推断与Object.SomeProperty的类型无关,而是与数组初始值设定项中表达式的类型有关.换句话说,你可以这样做:

object o = new[] { "string1","string2" };

和o仍然是对字符串数组的引用.

基本上,编译器会查看这样的表达式:

new[] { A,B,C,D,... }

(其中A,D等是表达式)并尝试计算出要使用的正确数组类型.它只考虑A,C和D(等)的类型作为数组元素类型.采用这组候选类型,它试图找到一个可以隐式转换为其他类型的候选类型.如果没有一个这样的类型,那么编译器会抱怨.

例如:

new[] { new Form(),new MemoryStream() }

不会编译 – MemoryStream和Form都不能转换为另一个.然而:

new[] { GetSomeIDisposable(),new MemoryStream() }

将被视为IDisposable []因为存在从MemoryStream到IDisposable的隐式转换.同样:

new[] { 0,1,3.5 } // double[]
new[] { 1,3,100L } // long[]

猜你在找的C#相关文章