C# 数组中的键值对功能
Key-Value pair functionality inside a C# array
我正在尝试让 'multidimensional' 锯齿状数组用于我的主要数据转换工作。我希望最里面的数组具有对象的键值对行为,但我不知道该使用什么语法:
object[][][] courseData = new object[][][]
{
new object[][]//chapter 1
{
new object[]
{
{id = 1, question = "question", answer = "answer"},
//this one?
(id = 2, question = "question", answer = "answer"),
//or this one?
}
}
}
很多语法对我来说都是新的,所以请让我知道我还犯了什么其他错误。
如果数组中的键值对是不可能的,我将不得不使用未命名的索引引用,对吗?那将在构建时使用 () 并使用 [0] 作为参考,是吗?这个数组甚至可以在对象之外保存混合数据类型吗?
ps:将处理此数据的函数示例:
function mapOrder (array, order, key) {
array.sort( function (a, b) {
var A = a[key], B = b[key];
if (order.indexOf(A) > order.indexOf(B)) {
return 1;
} else {
return -1;
}
});
return array;
};
reordered_array_a = mapOrder(courseData[0][0], orderTemplateSimple[0], id);
其中 orderTemplateSample[index] 是一个数字数组,用于从 courseData 转换 'extracted' 数组的顺序。
我想在那里引用 id 密钥,但如果我必须用理论上可行的数字替换它?
我们先从inmost类型说起,也就是
{id = 1, question = "question", answer = "answer"},
它不能是键值对,因为它有三个属性: id, question, answer
。
然而,你可以把它变成命名元组
(int id, string question, string answer)
声明将是
(int id, string question, string answer)[][][] courseData =
new (int, string, string)[][][]
{
new (int, string, string)[][]//chapter 1
{
new (int, string, string)[]
{
// Long form
(id : 1, question : "question", answer : "answer"),
// Short form: we can skip id, question, answer names
(2, "question", "answer"),
}
}
};
现在你有一个数组(准确地说是数组的数组):
int course = 1;
int chapter = 1;
int question = 2;
// - 1 since arrays are zero based
string mySecondAnswer = courseData[course - 1][chapter - 1][question - 1].answer;
我正在尝试让 'multidimensional' 锯齿状数组用于我的主要数据转换工作。我希望最里面的数组具有对象的键值对行为,但我不知道该使用什么语法:
object[][][] courseData = new object[][][]
{
new object[][]//chapter 1
{
new object[]
{
{id = 1, question = "question", answer = "answer"},
//this one?
(id = 2, question = "question", answer = "answer"),
//or this one?
}
}
}
很多语法对我来说都是新的,所以请让我知道我还犯了什么其他错误。
如果数组中的键值对是不可能的,我将不得不使用未命名的索引引用,对吗?那将在构建时使用 () 并使用 [0] 作为参考,是吗?这个数组甚至可以在对象之外保存混合数据类型吗?
ps:将处理此数据的函数示例:
function mapOrder (array, order, key) {
array.sort( function (a, b) {
var A = a[key], B = b[key];
if (order.indexOf(A) > order.indexOf(B)) {
return 1;
} else {
return -1;
}
});
return array;
};
reordered_array_a = mapOrder(courseData[0][0], orderTemplateSimple[0], id);
其中 orderTemplateSample[index] 是一个数字数组,用于从 courseData 转换 'extracted' 数组的顺序。
我想在那里引用 id 密钥,但如果我必须用理论上可行的数字替换它?
我们先从inmost类型说起,也就是
{id = 1, question = "question", answer = "answer"},
它不能是键值对,因为它有三个属性: id, question, answer
。
然而,你可以把它变成命名元组
(int id, string question, string answer)
声明将是
(int id, string question, string answer)[][][] courseData =
new (int, string, string)[][][]
{
new (int, string, string)[][]//chapter 1
{
new (int, string, string)[]
{
// Long form
(id : 1, question : "question", answer : "answer"),
// Short form: we can skip id, question, answer names
(2, "question", "answer"),
}
}
};
现在你有一个数组(准确地说是数组的数组):
int course = 1;
int chapter = 1;
int question = 2;
// - 1 since arrays are zero based
string mySecondAnswer = courseData[course - 1][chapter - 1][question - 1].answer;