【问题标题】:What does x=>(int)x - 48 mean when you add a number to a digit array?将数字添加到数字数组时,x=>(int)x - 48 是什么意思?
【发布时间】:2022-11-16 14:26:05
【问题描述】:

所以我输入数字,我试图在不使用任何循环的情况下将每个数字添加到一个 int 数组中

在这里我得到了答案

int[] fNum = Array.ConvertAll(num.ToString().ToArray(),x=>(int)x - 48);

我直到 .toarray() 才明白,但我不明白为什么它需要一个新变量 x 和 => (int)x - 48。

谁能给我解释一下?

【问题讨论】:

  • 这是一个 lambda 表达式。有很多关于 lambda 表达式的信息。
  • 这回答了你的问题了吗? What does the '=>' syntax in C# mean?
  • (int)x => 将此字符从字符串转换为整数形式的 unicode 值。注意Array.ConvertAll里面一定有一个循环,所以你的程序还是有一个循环的。

标签: c# arrays integer toarray


【解决方案1】:

因为 0 的 ascii 值是 48,而 1 是 49。所以要获得 char 值 1,您需要执行 49 - 48,这等于 1,其他数字也类似。

您还应该查看Array.ConvertAll 的文档。

它清楚地解释了第二个参数,

一个 Converter<TInput,TOutput> 转换来自一种类型的每个元素 到另一种类型。

您也可以在 Array 类中引用此声明。

另外,看看了解lambda operator和官方documentation

【讨论】:

  • 你能解释一下这一切吗,x=>(int)x - 48
  • 它的 lambda 运算符你可以探索它。
【解决方案2】:

不使用任何循环

好吧,我可能会给你一个惊喜。

一个新变量 x

ConvertAll 实际上是引擎盖下的一个循环。它遍历集合。 x 代表集合中的一个项目。

x=&gt;(int)x - 48

对于集合中的每个项目 x,将其转换为 int 并减去 48。

此语法是 lambda expression

【讨论】:

  • No. => 意思是:使用这个项目 x 和箭头的左侧,我们将在箭头的右侧执行操作。
【解决方案3】:
num.ToString().ToArray(),x=>(int)x - 48

这段代码是将一个用数字填充的字符串分割成一个字符数组,将CHAR类型的字符转换成ASCII值,再转换成Int值的过程。

CHAR类型的字母'5'是ASCII值53,必须是-48才能转换为INT类型值5。

【讨论】:

    猜你喜欢
    • 2020-03-18
    • 2021-08-02
    • 2019-08-06
    • 1970-01-01
    • 2015-03-24
    • 1970-01-01
    • 2020-10-02
    • 2011-05-27
    • 2018-05-03
    相关资源
    最近更新 更多