将 int 值添加到 char 数组 ASCII 值 C# & JAVA

Adding int values to char array ASCII value C# & JAVA

在 Java 中,您可以轻松地将 int 值添加到 char 数组,而无需像这样定义它

String name = " maisam is my name ";
        char[] arr = name.toCharArray();

        for (int i = 0; i < arr.length; i++) {

            arr[i] += 100;

        }

但在 c# 中,您需要在添加值时提及 (char)

string name = " maisam is my name ";
        char[] arr = name.ToCharArray();

        for (int i = 0; i < arr.Length; i++) {

            arr[i] += (char) 100;
        }

我在 Java 中尝试了两种方法,工作完美,没有错误,但在 c# 中它给了我一个错误,这是为什么?我到处搜索都没有找到任何解释!

这更多的是关于幕后发生的事情,而不是语法差异。您在 Java 中的转换方式与在 C# 中的转换方式相同,但您只是不需要在这段 Java 代码中这样做。 在 Java 中,它会自动将 int 转换为 char 类型。 但 C# 的工作方式不同,您必须强制转换值。 似乎 C# 的类型比 Java.

强一点

这应该有效。 c# 将 char 隐式转换为 int,但不会将 int 转换为 char,因此您必须在分配给 char 数组之前将添加的 int 值转换为 char..

string name = " maisam is my name ";
char[] arr = name.ToCharArray();

for (int i = 0; i < arr.Length; i++) {
    arr[i] = (char)(arr[i] + 100);
}

编辑: 代码 arr[i] += (char)100; 也可以正常工作。上面的代码只是对同一代码的阐述。

简单来说,C#

中没有从intchar的隐式转换

C# int

int -> long , float, double, or decimal

查看此 source 的其他可用性。

因为你没有像

这样的隐式转换
char c = 100 ;

但应该使用显式转换

char c = (char) 100 ; 

也在这里:C# char (source)

转化次数

A char can be implicitly converted to ushort, int, uint, long, ulong, float, double, or decimal. However, there are no implicit conversions from other types to the char type.