帮助我理解这个c#代码
本文关键字:代码 帮助 | 更新日期: 2023-09-27 18:05:42
C#3.0开始时的这段代码:面向对象编程简介
这是一个程序,让用户在多行文本框中输入几句话,然后计算每个字母在该文本中出现的次数
private const int MAXLETTERS = 26; // Symbolic constants
private const int MAXCHARS = MAXLETTERS - 1;
private const int LETTERA = 65;
private void btnCalc_Click(object sender, EventArgs e)
{
char oneLetter;
int index;
int i;
int length;
int[] count = new int[MAXLETTERS];
string input;
string buff;
length = txtInput.Text.Length;
if (length == 0) // Anything to count??
{
MessageBox.Show("You need to enter some text.", "Missing Input");
txtInput.Focus();
return;
}
input = txtInput.Text;
input = input.ToUpper();
for (i = 0; i < input.Length; i++) // Examine all letters.
{
oneLetter = input[i]; // Get a character
index = oneLetter - LETTERA; // Make into an index
if (index < 0 || index > MAXCHARS) // A letter??
continue; // Nope.
count[index]++; // Yep.
}
for (i = 0; i < MAXLETTERS; i++)
{
buff = string.Format("{0, 4} {1,20}[{2}]", (char)(i + LETTERA)," ",count[i]);
lstOutput.Items.Add(buff);
}
}
我不理解这条线
count[index]++;
和这行代码
buff = string.Format("{0, 4} {1,20}[{2}]", (char)(i + LETTERA)," ",count[i]);
count[index]++;
的意思是"在索引index
的count
中的值上加1"。++
具体称为递增。代码所做的是计算一个字母的出现次数。
buff = string.Format("{0, 4} {1,20}[{2}]", (char)(i + LETTERA)," ",count[i]);
正在格式化一行输出。带字符串。格式,您首先传入一个格式说明符,它的工作原理类似于模板或表单字母。{
和}
之间的部分指定了传递到string.Format
的附加参数的使用方式。让我分解一下格式规范:
{0,4}第一个(索引0(参数(在本例中为字母(。4部分表示输出时应占据4列的文本。{1,20}第二个(索引1(参数(在本例中为空格(。20用于强制输出为20个空格,而不是1个空格。{2} 第三个(索引2(参数(在本例中为计数(。
因此,当string.Format
运行时,(char)(i + LETTERA)
被用作第一个参数,并插入到格式的{0}
部分。" "
插入{1}
,count[i]
插入{2}
。
count[index]++;
这是一个后增量。如果你要保存它的返回,它将在增量之前计数[index],但它基本上所做的就是增加值并返回增量之前的值。至于方括号内有一个变量的原因,它引用了数组索引中的一个值。换句话说,如果你想谈论街上的第五辆车,你可以考虑类似StreetCars(5(的东西。好吧,在C#中,我们使用方括号和零索引,所以我们会有类似StreetCars[4]的东西。如果你有一个名为StreetCars的Car数组,你可以通过使用索引值来引用第五辆车。
至于字符串。Format((方法,请参阅本文。