0

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

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

无论如何,这是代码。

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

res没有在代码前面声明为数组,但它是res[t]在 if 语句中创建的。我在其他地方读到了一些关于“索引”的内容,但没有进一步了解,所以现在我请求你帮助为我解释这个小技巧。希望这个解释不会让我心碎。

提前致谢。

4

4 回答 4

2

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

于 2013-09-12T13:15:22.600 回答
2

此代码设置Initialfalseifret不是回文。例如:

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
于 2013-09-12T13:19:42.263 回答
0

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

我的猜测是在位置(L 是字符串的长度)[0, L-1], [1, L-2], [2, L-3 res] char, ... 并Initial在它们不相同时设置为 false。

于 2013-09-12T13:13:15.453 回答
0

在 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# 中的许多类都实现了这种行为,例如字符串、列表等。这就是为什么您可以访问字符串(即chars)上的单个元素,就好像它是一个数组一样。

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

于 2013-09-12T13:15:34.310 回答