如何进行转型?

use*_*560 0 c# linq-to-objects transform

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);
   }
Run Code Online (Sandbox Code Playgroud)

1)将"整数"转换为表示"word"中的整数的机制是什么?

2)像int这样的转换只能用int到string吗?或者我们可以通过这种转变来玩乐吗?

Jon*_*eet 7

  1. 它只是数组访问 - 它使用"数字"中的元素作为"字符串"数组的索引.

  2. 只有整数才能用于数组,但你可以同样拥有一个Dictionary<string, string>或任何可以做任意映射的东西.在这种情况下,您可以将字符串数组视为a 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];
    
    Run Code Online (Sandbox Code Playgroud)

    Console.WriteLine("Number strings:");

    foreach(textNums中的var s){Console.WriteLine(s); }

那仍然是使用整数 - 但你可以用字典做同样的事情,其中​​键是其他类型.


Sta*_* R. 5

不可以.字符串表示的顺序正确无误.这里没有魔力.

看一下字符串数组

strings[0] = "zero";
strings[1] = "one";
strings[2] = "two";
.
.
Run Code Online (Sandbox Code Playgroud)

它正确排序的事实是映射的原因.