C# 初学者,帮助解释代码片段

本文关键字:代码 片段 解释 帮助 初学者 | 更新日期: 2023-09-27 18:31:13

首先,我需要清楚我是C#新手的事实。我相信一种实用的方法,所以我将我的阅读与实际示例混合在一起。我也喜欢阅读代码并尝试真正理解它。然而,有一件事让我感到困惑。

我已经检查了我的书和互联网,但我真的不知道该搜索什么才能找到它。

无论如何,这是代码。

for (int t = 0; t < res.Length / 2; t++)
{
    if (res[t] != res[res.Length -t -1]) Initial = false;
}

res 未在代码前面声明为数组,但它在 if 语句中res[t]。我在其他地方读过一些关于"索引"的内容,但没有进一步了解,所以现在我请你帮我解释这个小技巧。希望这个解释不会让我的想法崩溃。

提前谢谢。

C# 初学者,帮助解释代码片段

C# 中的字符串实际上是字符数组。 这就是为什么您可以使用具有索引值的[]在字符串中查找单个字符的原因。

此代码Initial设置为 false 如果ret不是回文。 例如:

var res = new int[] {1,2,3,4,5, 6}; // not palindrome
var res1 = new int[] {1,2,3,3,2, 1}; // palindrome
var resString = "notpalindrome";
var resString1 = "asdfgfdsa"; // palindrome

使用调试器查看发生了什么。

我的猜测是在比较字符串字符(res,字符串"表现"像char数组)的位置(L 是字符串的长度)[0, L-1], [1, L-2], [2, L-3], ...并在Initial不同时将其设置为 false。

在 c# 中,在构建类时,可以使它们"可索引"。这意味着您可以通过索引访问基础数据,就像使用数组一样。

假设您有一个 DuckCollection 类,它在内部存储一个Duck[] duckArray数组。现在,您希望 DuckCollection 类的用户能够执行var duck = duckCollection[0]而不是var duck = duckCollection.duckArray[0]

你会这样做:

public class DuckCollection
{
    Duck[] duckArray;
    public Duck this[int index]    // Indexer declaration
    {
        return duckArray[index];
    }

}

C# 中的许多类都实现了这种行为,如字符串、列表等。这就是为什么您可以访问字符串(即 char s)上的单个元素,就好像它是一个数组一样。

有关索引器的详细信息:http://msdn.microsoft.com/en-us/library/2549tw02.aspx