gpt4 book ai didi

c# - 如何实现一个不简单封装字段的数组属性?

转载 作者:行者123 更新时间:2023-11-30 15:00:00 25 4
gpt4 key购买 nike

我想实现一个根据接收到的索引返回值的属性。我只是封装一个私有(private)数组。事实上,我要返回的数据并没有存储在任何数组中,而是存储在成员对象中。此数组属性只是一种以索引方式访问此数据而无需以索引方式存储数据的方法。

根据 this文章,以下应该有效:

public double Angles[int i] 
{
get { // return a value based on i; }
}

但是,我收到以下错误:

The type or namespace 'i' could not be found (are you missing a using directive or an assembly reference?)
Invalid token ']' in class, struct or interface member declaration
Invalid expression term 'int'
Bad array declarator: To declarate a managed array the rank specifier precedes the variable's identifier. To declare a fixed size buffer field, use the fixed keyword before the field type.
Array size cannot be specified in a variable declaration (try initializing with a 'new' expression)

从这些错误来看,我认为编译器似乎认为我正在尝试创建一个数组成员。显然我的语法在这里是错误的。谁能告诉我正确的方法吗?

最佳答案

C# 中不存在命名索引器。但是,您可以将 Angles 添加为某种具有索引器的对象,即

public class Foo {
public Angles Angles { get { return angles; } }
...
}

...

public class Angles {
public double this[int index] { get { ... } }
...
}

或者如果你想在一个类中实现:

public class Foo : IAngles {
public IAngles Angles { get { return this; } }
double IAngles.this[int index] { get { ... } }
}

public interface IAngles {
double this[int index] { get;}
}

关于c# - 如何实现一个不简单封装字段的数组属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15921503/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com