Home > Enterprise >  In my main, how to access string array in an array object? How to access parameter from constructor?
In my main, how to access string array in an array object? How to access parameter from constructor?

Time:03-05

UML is attached. I want to create a readonly property of pre which is an array of string. When I create an object in the main and try to set name and pre it is showing me an error.

UML

using System;

class Unit
{
    private string _name;
    private string[] _pre;

    public Unit(string name, string[] pre)
    {
        _name = name;
        _pre = new string[2];
    }

    public string Name { get { return _name; } }
    public string[] Pre { get { return _pre; } }
}

class Program
{
    public static void DisplayInfo(Unit[] _u)
    {
        for (int i = 0; i < 2; i  )
        {
            Console.WriteLine(_u[i].Name   _u[i].Pre);
        }
    }

    static void Main(string[] args)
    {
        Unit[] unitarraytest = new Unit[2];

        unitarraytest[0] = new Unit("test 1", "test 3");
        unitarraytest[1] = new Unit("test 2", "test 4");

        DisplayInfo(unitarraytest);
    }
}

CodePudding user response:

Your example makes little sense. You Unit constructor takes a parameter for "Pre", but immediately throws it away and allocates a new empty string array instead. It should probably be written like

class Unit
{
    public Unit(string name, string[] pre)
    {
        Name = name;
        Pre  = pre;
    }

    public string Name { get;}
    public string[] Pre { get;}
}

When creating Unit objects you actually need to create an array for the "Pre" parameter. Like new Unit("Name", new []{"pre1", "pre2"});

And when outputting the strings you need to access the individual strings in the array, or combine them to a larger string, for example like Console.WriteLine(_u[i].Name string.Join(" , ", _u[i].Pre));

  • Related