C#使用new []
发布时间:2020-12-15 07:41:17 所属栏目:百科 来源:网络整理
导读:我有一个关于使用new []的问题. 想象一下: Object.SomeProperty = new[] {"string1","string2"}; SomeProperty需要一个字符串数组. 我知道这段代码会起作用.但我想知道它在幕后做了什么. new []是否构成了类对象的实例,而在SomeProperty中,它会自动将其转换
我有一个关于使用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[] (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |