int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
string[] strings = { "zero", "one", "two", "three", "four", "five", "six",
"seven","eight", "nine" };
var textNums =
from n in numbers
select strings[n];
Console.WriteLine("Number strings:");
foreach (var s in textNums)
{
Console.WriteLine(s);
}
1)将“整数”转换为表示“word”中的整数的机制是什么?
2)像int这样的转换只能用int到string吗?或者我们可以玩得开心 这种转变?
答案 0 :(得分:7)
它只是数组访问 - 它使用“数字”中的元素作为“字符串”数组的索引。
只有整数才能用于数组,但您可以同样拥有Dictionary<string, string>
或任意做任意映射。在这种情况下,您可以将字符串数组视为Dictionary<int, string>
。你也可以这样重写它:
int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
var words = new Dictionary<int, string>
{
{ 0, "zero" },
{ 1, "one" },
{ 2, "two" },
{ 3, "three" },
{ 4, "four" },
{ 5, "five" },
{ 6, "six" },
{ 7, "seven" },
{ 8, "eight" },
{ 9, "nine" }
};
var textNums = from n in numbers
select words[n];
Console.WriteLine(“Number strings:”);
foreach(textNums中的var s) { Console.WriteLine(一个或多个); }
那仍然使用整数 - 但你可以用字典做同样的事情,其中键是其他类型。
答案 1 :(得分:5)
没有。字符串表示只是按正确的顺序排列。这里没有魔力。
查看字符串数组
strings[0] = "zero";
strings[1] = "one";
strings[2] = "two";
.
.
正确排序的事实是映射有效的原因。
答案 2 :(得分:2)
当你说strings [n]时,你正在访问数组的第n个值,并且数组的排序如下:
strings [0] =“zero”; strings [1] =“one”; ... strings [4] =“four”;
所以,这里没有魔法,只是一个有序的数组:P
答案 3 :(得分:1)
我会做以下事情:
public enum MyNumberType {
Zero = 0, One, Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten
}
你可以通过以下方式做你想做的事情:
namespace ConsoleApplication
{
class Program
{
public enum MyNumberType { Zero = 0, One, Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten }
private static int GetIntValue(MyNumberType theType) { return (int) theType; }
private static String GetStringValue(MyNumberType theType) { return Enum.GetName(typeof (MyNumberType),theType); }
private static MyNumberType GetEnumValue (int theInt) {
return (MyNumberType) Enum.Parse( typeof(MyNumberType), theInt.ToString() ); }
static void Main(string[] args)
{
Console.WriteLine( "{0} {1} {2}",
GetIntValue(MyNumberType.Five),
GetStringValue( MyNumberType.Three),
GetEnumValue(7)
);
for (int i=0; i<=10; i++)
{
Console.WriteLine("{0}", GetEnumValue(i));
}
}
}
}
产生以下输出:
5 Three Seven
Zero
One
Two
Three
Four
Five
Six
Seven
Eight
Nine
Ten
这可以扩展为更大的数字和数字,而不是连续范围,如下所示:
public enum MyNumberType {
ten= 10, Fifty=50, Hundred=100, Thousand=1000
}
枚举可以与其他类型一起使用,而不仅仅是int类型,因此这非常灵活。