Все возможные синтаксисы инициализации массива - PullRequest
626 голосов
/ 15 апреля 2011

Каковы все синтаксисы инициализации массива, которые возможны в C #?

Ответы [ 13 ]

2 голосов
/ 16 февраля 2018

Еще один способ создания и инициализации массива объектов.Это похоже на пример , который @Amol опубликовал выше , за исключением того, что в нем используются конструкторы.Я не смог устоять перед чертой полиморфизма.

IUser[] userArray = new IUser[]
{
    new DummyUser("abc@cde.edu", "Gibberish"),
    new SmartyUser("pga@lna.it", "Italian", "Engineer")
};

Классы для контекста:

interface IUser
{
    string EMail { get; }       // immutable, so get only an no set
    string Language { get; }
}

public class DummyUser : IUser
{
    public DummyUser(string email, string language)
    {
        m_email = email;
        m_language = language;
    }

    private string m_email;
    public string EMail
    {
        get { return m_email; }
    }

    private string m_language;
    public string Language
    {
        get { return m_language; }
    }
}

public class SmartyUser : IUser
{
    public SmartyUser(string email, string language, string occupation)
    {
        m_email = email;
        m_language = language;
        m_occupation = occupation;
    }

    private string m_email;
    public string EMail
    {
        get { return m_email; }
    }

    private string m_language;
    public string Language
    {
        get { return m_language; }
    }

    private string m_occupation;
}
0 голосов
/ 15 июня 2017

Тривиальное решение с выражениями. Обратите внимание, что с NewArrayInit вы можете создать только одномерный массив.

NewArrayExpression expr = Expression.NewArrayInit(typeof(int), new[] { Expression.Constant(2), Expression.Constant(3) });
int[] array = Expression.Lambda<Func<int[]>>(expr).Compile()(); // compile and call callback
0 голосов
/ 15 сентября 2016

Вы также можете создавать динамические массивы, т. Е. Вы можете сначала запросить размер массива у пользователя перед его созданием.

Console.Write("Enter size of array");
int n = Convert.ToInt16(Console.ReadLine());

int[] dynamicSizedArray= new int[n]; // Here we have created an array of size n
Console.WriteLine("Input Elements");
for(int i=0;i<n;i++)
{
     dynamicSizedArray[i] = Convert.ToInt32(Console.ReadLine());
}

Console.WriteLine("Elements of array are :");
foreach (int i in dynamicSizedArray)
{
    Console.WriteLine(i);
}
Console.ReadKey();
...