Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 转型如何可能?_C#_Linq To Objects_Transform - Fatal编程技术网

C# 转型如何可能?

C# 转型如何可能?,c#,linq-to-objects,transform,C#,Linq To Objects,Transform,1) 将“整数”转换为在“word”中表示整数的机制是什么 2) 像这样的转换只有在int到string的情况下才可能实现?或者我们可以和你一起玩吗 此转换?否。字符串表示的顺序正确,仅此而已。这里没有魔法 看看字符串数组 int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 }; string[] strings = { "zero", "one", "two", "three", "four", "five", "six",

1) 将“整数”转换为在“word”中表示整数的机制是什么

2) 像这样的转换只有在int到string的情况下才可能实现?或者我们可以和你一起玩吗
此转换?

否。字符串表示的顺序正确,仅此而已。这里没有魔法

看看字符串数组

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);
   }
其顺序正确这一事实就是映射工作的原因

  • 这只是数组访问——它使用“numbers”中的元素作为“strings”数组的索引

  • 只有整数可以用于数组,但您同样可以使用
    字典
    或任何可以进行任意映射的东西。在这种情况下,可以将字符串数组看作是一个
    字典。你也可以这样重写:

    strings[0] = "zero";
    strings[1] = "one";
    strings[2] = "two";
    .
    .
    
    int[]数字={5,4,1,3,9,8,6,7,2,0};
    新字典
    {
    {0,“零”},
    {1,“一”},
    {2,“两”},
    {3,“三”},
    {4,“四”},
    {5,“5”},
    {6,“6”},
    {7,“七”},
    {8,“8”},
    {9,“9”}
    };
    var textNums=从n开始,以数字表示
    选择单词[n];
    
    Console.WriteLine(“数字字符串:”)

    foreach(文本nums中的变量s) { 控制台。写入线(s); }


  • 这仍然使用整数-但是你可以对字典做同样的事情,其中键是其他类型的。

    当你说字符串[n]时,你正在访问数组的第n个值,数组的顺序如下:

    字符串[0]=“零”; 字符串[1]=“一”; ... 字符串[4]=“四”


    因此,这里没有魔法,只是一个有序数组:p

    我将执行以下操作:

    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];
    
    您可以通过以下方式来使用它:

    public enum MyNumberType { 
            Zero = 0, One, Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten
            }
    
    这可以扩展到较大的数字和不在连续范围内的数字,如:

    5 Three Seven
    Zero
    One
    Two
    Three
    Four
    Five
    Six
    Seven
    Eight
    Nine
    Ten
    

    枚举也可以与其他类型一起使用,而不仅仅是int类型,因此这非常灵活。

    抱歉!我没有仔细检查。谢谢。:)非常感谢你。我为我的愚蠢感到难过。我没有正确地解释这个例子。非常感谢你,乔恩。:)祝你有一个愉快的一天我期待你回答我之前的一个问题(问题标题:Linq-跑步总量和小计)。如果时间允许,也请帮助我。乔恩,我认为这不是最好的解决方案。我说了什么@托尼:这解释了他是如何从整数版本变成非整数版本的。它适用于在字典中充当键的任意类型,而Enum则不行。@linqfying:这个问题的答案已经非常好了。我看不出还有什么需要补充的。这种解决方案的缺点是,您将代码视为代码和文本。名为“三”的枚举可以转换为字符串,这一事实在很多地方都很有用,但我觉得在用户输出中将名称实际视为字符串相当尴尬。此外,它不适用于非整数类型(例如字符串、浮点、GUID),也不容易国际化(不同于一本字典,你可以为不同的语言编写不同的字典)。他实际上并没有说他想让它做吐司,或者确实在国际上工作……尽管他可能……他不喜欢吐司我喜欢吐司。
    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
            }