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

时间:2015-03-20 04:34:30

标签: java c# arrays encryption char

在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#中它给了我一个错误,为什么会这样?我到处搜索都没有找到任何解释!

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

这应该有效。 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;也可以。上面的代码只是对相同代码的详细说明。

答案 2 :(得分:1)

简单来说,int

中没有从charC#的隐式转换

C# int的内容是

int -> long , float, double, or decimal

请参阅此source的其他可用性。

由于您没有像

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

但应使用显式转换

char c = (char) 100 ; 

此处也是:C# charsource

<强>转化

  

char可以隐式转换为ushort,int,uint,long,ulong,   float,double或decimal。但是,没有隐式转换   从其他类型到char类型。