C# 减去字符串的值

C# 减去字符串的值,c#,string,C#,String,我试图理解以下代码。但我很难找到任何东西,所以我想确保我理解正确。如果我错了,请纠正我 string choice = txtProduct.Text.ToUpper(); char coordX = choice[0]; int indexX = coordX - 'A'; 我认为每个字符串字母(A,B,C等等)都有一个值,所以coordX-'A'只是减去这些值 因此,如果用户输入“A”,它将是“A”-“A”,即0 如果用户输入“B”,则为“B”-“A”,即1。 等等。你说得对, 此代码返回

我试图理解以下代码。但我很难找到任何东西,所以我想确保我理解正确。如果我错了,请纠正我

string choice = txtProduct.Text.ToUpper();
char coordX = choice[0];
int indexX = coordX - 'A';
我认为每个字符串字母(A,B,C等等)都有一个值,所以
coordX-'A'只是减去这些值

因此,如果用户输入“A”,它将是“A”-“A”,即0 如果用户输入“B”,则为“B”-“A”,即1。 等等。

你说得对, 此代码返回字母表中字母的索引。

您说得对,
此代码返回字母表中字母的索引。

是,正确。也许它的写作意图是根据abcdefghijklmnopqrstuvwxyz找到第一个字符的顺序是的,你是正确的。也许它的写作意图是根据abcdefghijklmnopqrstuvwxyz查找第一个字符的序列顺序

int indexX = coordX - 'A';
它将您的字符转换为ASCII数字,然后减去ASCII并返回结果

这可能更为清晰:

int indexX = (int)coordX - (int)'A';

因此,ASCII中的“A”是65,“B”是66,这就是你得到结果的方式。

当你运行这一行时,真正发生的事情是:

int indexX = coordX - 'A';
它将您的字符转换为ASCII数字,然后减去ASCII并返回结果

这可能更为清晰:

int indexX = (int)coordX - (int)'A';

因此,ASCII中的“A”是65,而“B”是66,因此这就是您获得结果的方式。

您是否运行了要检查的代码?请注意,“A”和“A”有不同的值。如果您输入“A”,您将得到0。问题是什么?代码依赖于所有字符都在一系列连续编号的字母中,顺序是有用的,特别是字母中的大写字母或小写字母。它可以在特定的程序中工作。(这不适用于典型的英文出版文本,比如说《纽约时报》)您是否运行代码进行检查?请注意,“A”和“A”的值不同。如果您输入“A”,您将得到0。问题是什么?代码依赖于所有字符都在一系列连续编号的字母中,顺序是有用的,特别是字母中的大写字母或小写字母。它可以在特定的程序中工作。(它不适用于典型的英文出版文本,比如说纽约时报。)不是ASCII,Unicode/(每个Unicode码点一个或两个)。不是ASCII,Unicode/(每个Unicode码点一个或两个)。