public class CubicMatrix<Object?>
{
private int width;
private int height;
private int depth;
private Object[, ,] matrix;
public CubicMatrix(int inWidth, int inHeight, int inDepth)
{
width = inWidth;
height = inHeight;
depth = inDepth;
matrix = new Object[inWidth, inHeight, inDepth];
}
public void Add(Object toAdd, int x, int y, int z)
{
matrix[x, y, z] = toAdd;
}
public void Remove(int x, int y, int z)
{
matrix[x, y, z] = null;
}
public void Remove(Object toRemove)
{
for (int x = 0; x < width; x++)
{
for (int y = 0; y < height; y++)
{
for (int z = 0; z < depth; z++)
{
Object value = matrix[x, y, z];
bool match = value.Equals(toRemove);
if (match == false)
{
continue;
}
matrix[x, y, z] = null;
}
}
}
}
public IEnumerable<Object> Values
{
get
{
LinkedList<Object> allValues = new LinkedList<Object>();
foreach (Object entry in matrix)
{
allValues.AddLast(entry);
}
return allValues.AsEnumerable<Object>();
}
}
public Object this[int x, int y, int z]
{
get
{
return matrix[x, y, z];
}
}
public IEnumerable<Object> RangeInclusive(int x1, int x2, int y1, int y2, int z1, int z2)
{
LinkedList<Object> list = new LinkedList<object>();
for (int a = x1; a <= x2; a++)
{
for (int b = y1; b <= y2; b++)
{
for (int c = z1; c <= z2; c++)
{
Object toAdd = matrix[a, b, c];
list.AddLast(toAdd);
}
}
}
return list.AsEnumerable<Object>();
}
public bool Available(int x, int y, int z)
{
Object toCheck = matrix[x, y, z];
if (toCheck != null)
{
return false;
}
return true;
}
}
我在C#中创建了一个立方矩阵类来存储三维项目。我需要能够添加和删除项目,这就是为什么我使用对象?(我已经明白了不能使用可为空的泛型,即t?)。然而,这种方法可能会出错
类型参数声明必须是标识符,而不是类型
如果我不使用Object?不过,只要使用Object或T,我就会得到这个错误
无法将null转换为类型参数“T”,因为它可能是不可为null的值类型。考虑使用“默认”(t)。
在这种情况下,正确的语法和方法是什么?
我想您应该使用通用参数T
。您正在创建一个简单的容器类,因此允许任何泛型参数都是有意义的,无论它是否可为null。要修复错误,只需按照它所说的做,并使用default(T)
而不是null
。
错误是因为T
可以是类
或结构
,并且struct
s不能为空。因此,将类型为T
的变量分配给null
是无效的<当T
为类时,code>default(T)为null
,当T
为结构时,默认值为。
当返回default(T)
时(正如您得到的错误所表明的那样),引用类型将返回null
,数值类型将返回0
,自定义类将返回null
,空值将返回System。可为空
现在,当我在地图上迭代时…我能以某种方式获得每个Class1对象的类型(K,V)吗??
我有以下问题。 我必须将json请求解析为包含泛型类型字段的对象。 编辑 我使用常规类类型进行了一些测试(因此我在将其替换为泛型之前使其工作)。现在解析单个元素效果很好。 问题是何时需要从该类中解析出列表对象。 所以我不得不告诉jackson,我的T是list类型,而不仅仅是AlbumModel。 这是我尝试过的。 但是上面的代码不起作用。这种情况的解决方案是什么? 我的泛型类型在List响应模型
我有一个从数组中检索元素的方法,我想对几个基元类型(int[]、double[]、...)使用相同的方法。方法如下: 但是,如何获取数据的类型以使用适当的基元类型实例化selectedElements数组? 非常感谢
我正在创建一个由数组支持的泛型类型堆栈。当我尝试创建泛型类型数组时,Java不允许我这样做。有人告诉我,我必须创建一个类型为Object的数组,并将其转换为泛型类型。我已经将对象数组转换为类型,但如何处理Java不断给我的未检查类型错误? 这就是我目前所处的位置。 更新:我正在创建一个对象数组,然后在方法的末尾将返回类型转换为T类型。
问题内容: 如果我有一个通用类: 我想实例化几个项目,例如… …并将它们添加到集合中。如何定义集合,使其可以容纳泛型类型列表?然后,我想在某个时刻迭代集合,并使用Value属性。可能? 问题答案: 让您的泛型类从非泛型基类继承,或实现一个非泛型接口。然后,您可以拥有此类型的集合,并将其转换为用于访问集合内容的任何代码。 这是一个例子。
所以我有这样的课: 现在我正在寻找一个类型约束,它允许我使用所有可以是的类型参数。这意味着所有引用类型,以及所有()类型: 应该是可能的。 使用作为类型约束只允许我使用引用类型。 附加信息:我正在编写一个pipes and filters应用程序,并希望使用引用作为传递到管道中的最后一项,这样每个过滤器都可以很好地关闭,进行清理,等等。。。