在C#,.Net 4的背景下......
给定一个数据源对象,它通过索引从一个双精度数组中提供顶点,其中一个顶点包含10个双精度数,其中包含成员Px,Py,Pz,Nx,Ny,Nz,S,T,U,V,并且后备数组包含全部或基于数据源的步幅,偏移和计数属性的顶点成员的任何子集.数据源可以简化为:
public class DataSource
{
private double[] data;
private int offset, stride, count;
public double[] ElementAt(int index)
{
double[] result = new double[count];
var relativeIndex = index * stride + offset;
Array.Copy(data, relativeIndex, result, 0, count);
return result;
}
.
.
.
}
Run Code Online (Sandbox Code Playgroud)
一些消费者会对double []的返回类型感兴趣,但大多数会以PointNf类型请求数据,其中N是所采用的顶点成员数(Point1f ... Point10f).Point类型的消费者不关心源的步幅,而源为大于其步幅的成员提供零.例如,来自步幅3的源的Point4f将填充数据[i + 0],数据[i + 1],数据[i + 2],0.
显然,DataSource可以公开方法GetPoint1f(int index),GetPoint2f(int index)等.给定固定的返回类型,元素大小等,这些类型的解决方案可能是最好的.但是......
如果像......那样的语法有什么可能的解
Point3f point = SomeDataSource.ElementAt[index];
Run Code Online (Sandbox Code Playgroud)
...或者类似的是被要求/要求/期望的?...利弊?...什么不该做的例子?...严厉的语言?