【问题标题】:Is it possible to create a property that simulates an array?是否可以创建一个模拟数组的属性?
【发布时间】:2019-08-07 02:09:11
【问题描述】:

我有一个结构数组,我想创建一个不是特定数组的属性,而是模拟一个数组,因为它返回结构数组的某个元素的特定属性。类似的东西

using System;
namespace neuralNet {
    private struct neuralLayers {
        public double[] results;
        //other fields
    }
    public int numNeurons[int i] {get { return neuralLayers[i].results.length; }}
}

所以它是一个在不实际创建对象的情况下模拟 int[] 效果的属性。有没有办法做到这一点?目前我有一个与结构本身分开维护的int[] numNeurons 属性,但我宁愿直接访问请求的元素的长度。

【问题讨论】:

  • @RufusL 这是一个方法,而不是一个属性
  • @RufusL 重点是您回答的问题与我提出的问题不同。但是您可以将数组指定为属性int[] myProperty { get {return somArray;}},然后从该属性调用一个元素,例如int myElement = myProperty[index],因此索引已经可以传递给属性,我只想能够做到这一点而不必创建数组,就像在这种情况下一样,因为我要查找的元素是数组的长度,该数组是结构数组中的一个字段。
  • 在上面的示例中,应该在某处定义了一个 class,其中包含 neuralLayers 数组(以及 NumNeurons 属性)。此外,您的代码不符合 C# 约定 - 它看起来非常 JavaScript-y。 :)
  • @RufusL 哈哈,是的,你是对的,我现在还没有完全离开:-P

标签: c# arrays properties


【解决方案1】:

听起来您想要的是拥有一个属性,该属性返回一个数组,该数组包含myStruct 对象数组中每个myStruct.structField 数组字段的长度。

如果是这样,那么你可以这样做:

public int[] StructFieldLength => classField?.Select(c => c.structField.Length).ToArray();

【讨论】:

    猜你喜欢
    • 2013-12-18
    • 1970-01-01
    • 1970-01-01
    • 2012-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-09
    • 1970-01-01
    相关资源
    最近更新 更多