Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将数组作为类的字段进行求值?_C# - Fatal编程技术网

C# 将数组作为类的字段进行求值?

C# 将数组作为类的字段进行求值?,c#,C#,我希望在类中有一个数组,可以由类本身的方法使用。我想用一个方法计算数组,然后用另一个方法读取,我如何用c#实现这一点?谢谢 您披露的有关该问题的信息令人困惑(可能是因为语言障碍),但这是两个问题之一: 您试图从某物的上下文之外访问arrayName(与从另一个类中一样),问题在于arrayName的访问级别(默认访问级别为private)。如果需要与另一个类共享arrayName字段,则可以在其前面加上public,如下所示: 分类 { //假设您在某处定义了索引 public Double[]

我希望在类中有一个数组,可以由类本身的方法使用。我想用一个方法计算数组,然后用另一个方法读取,我如何用c#实现这一点?谢谢


您披露的有关该问题的信息令人困惑(可能是因为语言障碍),但这是两个问题之一:

  • 您试图从
    某物
    的上下文之外访问
    arrayName
    (与从另一个类中一样),问题在于
    arrayName
    的访问级别(默认访问级别为
    private
    )。如果需要与另一个类共享
    arrayName
    字段,则可以在其前面加上
    public
    ,如下所示:

    分类 { //假设您在某处定义了
    索引
    public Double[]arrayName=new Double[20]; 公开作废法() { arrayName[索引]=值; 索引++; } }

  • 您正在尝试分配数组元素的值。您拥有的代码应该与数组的大小一致,在您的情况下,当
    index=20
    (或21个元素)时,数组的大小就是这样。一旦下一次迭代发生,您将遇到一个
    IndexOutOfBoundsException
    ,因为数组中没有足够的空间容纳下一个元素

  • 我建议切换到
    List
    ,这类似于可变长度数组。其实施情况如下:

    class Something 
    {
        List<Double> listName = new List<Double>(); 
        public void Method() 
        {
            listName[index] = value; 
            index++;
        }
    }
    
    分类
    {
    List listName=新列表();
    公开作废法()
    {
    listName[索引]=值;
    索引++;
    }
    }
    

    但是,如果您无法更改集合类型(尽管如果需要此功能,我建议您这样做),如果
    index
    大于
    arrayName
    的大小,您可以调整数组的大小。我可以提供一个例子(或者你可以通过简单的搜索找到其中一个),如果这是你想要的。

    你说的“用方法评估数组”是什么意思?在你的问题中添加了你评论中的代码(根据我对标准的偏好进行调整)如果我误传了,请调整。+1,即使带下划线;)@当然,作为惯例,我更喜欢在字段前面加上
    ;“我个人不喜欢那个惯例,但这是品味的问题。”阿达姆罗宾森,出于兴趣,你喜欢什么惯例
    this.myField
    ?@souphianisus:恐怕语言障碍让人难以理解。您能否发布一些您尝试过的示例代码,并描述您得到的行为与您期望的行为?
    public class Foo
    {
        private SomeType[] _someArrayField;
    
        public void SomeMethod()
        {
            // you can access the _someArrayField field here
        }
    }
    
    class Something 
    {
        List<Double> listName = new List<Double>(); 
        public void Method() 
        {
            listName[index] = value; 
            index++;
        }
    }