我正在尝试向我的索引列表添加一个短值,但我收到一个错误,即该方法具有无效参数。
int verticesStart = vertices.Count();
short vertStart = (short)verticesStart;
由于索引列表是“短”的,我将变量 verticesStart 转换为可用。
indices.Add(vertStart + 0);
这条线是我得到错误的地方。我是否不允许在 Add 方法中执行任何类型的数学函数?
我正在尝试向我的索引列表添加一个短值,但我收到一个错误,即该方法具有无效参数。
int verticesStart = vertices.Count();
short vertStart = (short)verticesStart;
由于索引列表是“短”的,我将变量 verticesStart 转换为可用。
indices.Add(vertStart + 0);
这条线是我得到错误的地方。我是否不允许在 Add 方法中执行任何类型的数学函数?
C# 中的算术是为 32 位及以上整数类型定义的,而不是为short
. 当你这样做vertStart + 0
时,结果是一个int
,你必须把它转换回一个short
:
indices.Add((short)(vertStart + 0));
(我假设您实际上并没有添加0
,而是添加了其他值。因为添加 0 当然不会改变值。)
由于索引列表是“
short
”
因此,您只能将short
s 添加到indices
.
vertStart + 0
语言规则指定short + int
具有 type int
。由于vertStart
is 是 typeshort
并且0
是int
文字,vertStart + 0
因此具有 type int
。所以,
indices.Add(vertStart + 0);
正在尝试将一个添加int
到您所说的持有short
s 的列表中。这是不可能的。
我是否不允许在
Add
方法中执行任何类型的数学函数?
那不是重点。任何表达式在传递给Add
方法之前都会对其值进行评估。在您的情况下,您有一个计算结果为 type 的表达式int
。但是如果indicies
真的List<short>
如你所说的那样,那么你不能添加int
s 到它。您将不得不缩小转换为short
.
indices.Add((short)(vertStart + 0));
算术总是至少在int
. 所以当你做那个加法时(如果我问,为什么加 0?)你会得到int
回报。之后你必须再次回撤。
使用这个:
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