C# 将转换后的值存储在变量中

C# 将转换后的值存储在变量中,c#,C#,我正在尝试存储提取的字符串的值。我无法使其工作 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { string a = "123";

我正在尝试存储提取的字符串的值。我无法使其工作

    using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string a = "123";

            int c = a[a.Length - 1];

            Console.WriteLine(c);
        }
    }
}

3不应该存储在变量c中吗?我只想存储3个;我不知道这有什么问题,输出是'51'怎么可能

您正在将字符3的ascii码隐式转换为整数。
此代码值为51

如果要获取整数值,需要解析该字符

string a = "123";

char c = a[a.Length - 1];
string c2 = string.Concat(c,c);
int v = Int32.Parse(c.ToString());
int v2 = v + v;

Console.WriteLine("This is a char:" + c);   // 3
Console.WriteLine("This is a string:" + c2); // 33
Console.WriteLine("This is an integer: " + v);  // 3
Console.WriteLine("This is an integer: " + v2);  // 6

您正在将字符3的ascii码隐式转换为整数。
此代码值为51

如果要获取整数值,需要解析该字符

string a = "123";

char c = a[a.Length - 1];
string c2 = string.Concat(c,c);
int v = Int32.Parse(c.ToString());
int v2 = v + v;

Console.WriteLine("This is a char:" + c);   // 3
Console.WriteLine("This is a string:" + c2); // 33
Console.WriteLine("This is an integer: " + v);  // 3
Console.WriteLine("This is an integer: " + v2);  // 6
3不应该存储在变量c中吗

否,
'3'
的整数表示应该存储在变量
c
中,实际上是

你实际上在做:

char tmp = a[a.Length - 1]; // tmp = '3'
int c = tmp; // Implicit conversion to int
NET中的“字符”表示实际上是一个UTF-16代码单元。。。从
char
转换为
int
只需复制该代码单元

'3'
的代码单位是51,因此您的输出是51

如果您只使用
char
,您会很好:

string a = "123";
char c = a[a.Length - 1];
Console.WriteLine(c); // "3"
如果要获取字符的“数值”,可以使用:

请注意,您必须强制转换为
int
,因为返回类型是
double
,以便处理表示分数、无穷大等的字符

如果您完全确定该值始终是ASCII数字,则只需减去
'0'

int value = a[a.Length - 1] - '0';
不过要注意,对于非数字输入,这将悄悄地给出“奇数”结果

3不应该存储在变量c中吗

否,
'3'
的整数表示应该存储在变量
c
中,实际上是

你实际上在做:

char tmp = a[a.Length - 1]; // tmp = '3'
int c = tmp; // Implicit conversion to int
NET中的“字符”表示实际上是一个UTF-16代码单元。。。从
char
转换为
int
只需复制该代码单元

'3'
的代码单位是51,因此您的输出是51

如果您只使用
char
,您会很好:

string a = "123";
char c = a[a.Length - 1];
Console.WriteLine(c); // "3"
如果要获取字符的“数值”,可以使用:

请注意,您必须强制转换为
int
,因为返回类型是
double
,以便处理表示分数、无穷大等的字符

如果您完全确定该值始终是ASCII数字,则只需减去
'0'

int value = a[a.Length - 1] - '0';

请注意,对于非数字输入,这将默默地给出“奇数”结果。

您可以使用字符和整数之间的隐式转换

使用从字符串到int的显式转换


可以在字符和整数之间使用隐式转换

使用从字符串到int的显式转换


谢谢;但是有没有一种方法可以让我不用转换成char就可以做到这一点呢?实际上,我想用3加一个数字,如果我将其转换为字符,我将无法添加..@user3497152:你有一个
char
-字符串基本上是一个
char
值序列。这就是你开始的。。。您没有转换为
char
。你想要的显然是从
char
转换成
int
——见我答案的结尾;但是有没有一种方法可以让我不用转换成char就可以做到这一点呢?实际上,我想用3加一个数字,如果我将其转换为字符,我将无法添加..@user3497152:你有一个
char
-字符串基本上是一个
char
值序列。这就是你开始的。。。您没有转换为
char
。显然,您想要的是从
char
转换为
int
——请参见我答案的结尾。