数组类型之间的隐式引用转换

时间:2015-12-28 09:56:50

标签: c#

在C#标准中编写了根据以下规则存在数组之间的隐式转换:

  

从具有元素类型SE的数组类型S到具有的数组类型T.   如果满足以下所有条件,则为元素类型TE:

  • S和T仅在元素类型上有所不同。换句话说,S和T有 相同数量的维度。

但如果我做:

int[] j = { 1, 2 };
int[] k = { 1 };

k = j;

没有发出编译器错误。也许我没有理解这条规则的含义......

  • SE和TE都是参考类型。

但是,再次,在上面的示例中,jk的元素类型是值类型。

  • 从SE到TE存在隐式参考转换。

如果我有:

int[] j = { 1, 2 };
short[] k = { 1, 5 };

j = k;

似乎可以从类型short的元素到类型int的元素进行隐式转换,但编译器不能编译。发错。

真诚地,我无法确定此规则的运作方式!

4 个答案:

答案 0 :(得分:2)

jk都属于同一类型。有一个整数数组,它们都有一个维度。因此阵列完全符合规则。

这些是文档中描述的数组的错误使用:

object[] j; int[] k;

int[,] j; int[] k;

float[] j; int[] k;

答案 1 :(得分:1)

此代码的作用是使<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> <div ng-app="appTelDirectory" ng-controller="directoryList"> <input placeholder="Поиск..." ng-model="searchAll" class="form-control"> <ul> <li ng-repeat="item in users | filter:searchAll | startFrom:currentPage*pageSize | limitTo:pageSize">{{item.name}}</li> </ul> <table> <tr ng-repeat="item in users | startFrom:currentPage*pageSize | limitTo:pageSize"> </table> <button ng-disabled="currentPage == 0" ng-click="currentPage=currentPage-1">Previous</button> {{currentPage+1}}/{{numberOfPages()}} <button ng-disabled="currentPage >= users.length/pageSize - 1" ng-click="currentPage=currentPage+1"> Next </button> </div>k指向同一个数组,j

由于{ 1, 2 }k都是具有相同数量的维度和相同元素类型的数组,因此您可以使用此代码将另一个指向另一个

答案 2 :(得分:0)

  1. 您的数组具有相同的元素类型。
  2. 您的数组在其元素中包含值类型。
  3. 您的数组具有相同的维度 - 一个。
  4. Multi-dimensional arrays看起来像这样:int[,,](3维)。

答案 3 :(得分:0)

S和T指的是数组的类型。在这种情况下,jk都是int[]类型,因此没有隐式转换,因为它们属于同一类型。

由于元素类型没有差异,因此它们的尺寸无关紧要。