我正在尝试在索引列表中添加一个短值,但是我收到的错误是该方法的参数无效。
int verticesStart = vertices.Count();
short vertStart = (short)verticesStart;
由于索引列表是“短”,我将变量verticesStart转换为可用。
indices.Add(vertStart + 0);
此行是我收到错误的地方。我不允许在Add方法中执行任何类型的数学函数吗?
答案 0 :(得分:3)
C#中的算术是针对32位和更高的整数类型定义的,而不是short
。当您执行vertStart + 0
时,结果为int
,您必须转回short
:
indices.Add((short)(vertStart + 0));
(我假设你实际上并没有添加0
,而是添加其他值。因为当然,添加0不会改变值。)
答案 1 :(得分:2)
由于索引列表是“
short
”
因此,您只能将short
添加到indices
。
vertStart + 0
语言规则指定short + int
的类型为int
。由于vertStart
的类型为short
而0
的格式为int
,因此vertStart + 0
的类型为int
。因此,
indices.Add(vertStart + 0);
正在尝试将int
添加到您说保留short
的列表中。这是不可能的。
我不允许用
Add
方法做任何类型的数学函数吗?
这不是重点。在将任何表达式传递给Add
方法之前,会对它们的值进行求值。在您的情况下,您有一个表达式,其求值为int
。但是,如果您indicies
真的是List<short>
,那么您就无法向其中添加int
。您必须缩小转化为short
。
indices.Add((short)(vertStart + 0));
答案 2 :(得分:0)
算术始终至少在int
完成。所以当你做这个添加时(为什么要加0,如果我可能会问?)你会得到一个int
。之后你必须再次投简。
答案 3 :(得分:-2)
使用此:
using System;
using System.Collections.Generic;
public class Test
{
public static void Main()
{
List<short> list = new List<short>();
list.Add(1+1);
}
}
在C#中,1为int
,因此您需要确保添加short