我正在尝试向我的索引列表添加一个短值,但我收到一个错误,即该方法具有无效参数。
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”
因此,您只能将shorts 添加到indices.
vertStart + 0
语言规则指定short + int具有 type int。由于vertStartis 是 typeshort并且0是int文字,vertStart + 0因此具有 type int。所以,
indices.Add(vertStart + 0);
正在尝试将一个添加int到您所说的持有shorts 的列表中。这是不可能的。
我是否不允许在
Add方法中执行任何类型的数学函数?
那不是重点。任何表达式在传递给Add方法之前都会对其值进行评估。在您的情况下,您有一个计算结果为 type 的表达式int。但是如果indicies真的List<short>如你所说的那样,那么你不能添加ints 到它。您将不得不缩小转换为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