BG Development


Страници: (2) [1] 2   ( Първото ново мнение ) Reply to this topicStart new topicStart Poll

> Статичен масив с данни в С#
dvader
Публикувано на: 30-01-2020, 20:14
Quote Post


Group Icon
Име:
Група: VIP
Ранг: Почетен член

Мнения: 4832
Регистриран на: 12.07.05



Трябва ми С# еквивалента на следният С++ код:
CODE
static const struct
{
 string Name;
 int Age;
}
gArray[] =
{
 { "Waleri", 49},
};


Благодаря.

Това мнение е било редактирано от dvader на 30-01-2020, 20:15


--------------------
I find your lack of faith disturbing
PM
Top
Expressing
Публикувано на: 30-01-2020, 20:33
Quote Post



Име:
Група: Потребител
Ранг: Посетител

Мнения: 57
Регистриран на: 22.02.17



CODE
public struct Person
{
    public string Name { get; set; }

    public int Age { get; set; }

    public Person(string name, int age)
    {
          Name = name;
          Age = age;
    }
}

static Person[] persons = new Person[]
{
  new Person("Waleri", 49)
};


?
PMEmail Poster
Top
40oz
Публикувано на: 30-01-2020, 20:36
Quote Post



Име:
Група: Потребител
Ранг: Редовен член

Мнения: 403
Регистриран на: 23.05.13



CODE
var gArray = new[] { (Name: "Waleri", Age: 49) };
PMEmail Poster
Top
PxL
Публикувано на: 30-01-2020, 20:56
Quote Post


Group Icon
Име: Димитър Т. Димитров
Група: VIP
Ранг: Почетен член

Мнения: 3447
Регистриран на: 26.04.05



QUOTE (Expressing @ 30-01-2020, 21:33)
CODE
public struct Person
{
    public string Name { get; set; }

    public int Age { get; set; }

    public Person(string name, int age)
    {
          Name = name;
          Age = age;
    }
}

static Person[] persons = new Person[]
{
  new Person("Waleri", 49)
};


?

За конст-а ще трябва да са readonly:

CODE

public struct Person
{
    public readonly string Name;
    public readonly int Age;

    public Person(string name, int age)
    {
          Name = name;
          Age = age;
    }
}

static readonly Person[] persons = new Person[]
{
  new Person("Waleri", 49)
};


--------------------
void putchar(char c);int main(){int x,c=1,i;for(i=0;(x="PxLY2H4:2E;7231?=68255A5S5P9N:N9O84111H861I85111G9N:O811O812M<G33911EAEDBECE22169D1=2k"[i+++3]);)while(x-->'0')putchar((!(++c%'('))?0x0a:33^(i&1));}
PMEmail PosterUsers Website
Top
JanBirdX
Публикувано на: 30-01-2020, 22:06
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 1710
Регистриран на: 21.02.05



QUOTE (40oz @ 30-01-2020, 20:36)
CODE
var gArray = new[] { (Name: "Waleri", Age: 49) };

+1
PMEmail Poster
Top
zahasoft
Публикувано на: 31-01-2020, 06:36
Quote Post



Име:
Група: Потребител
Ранг: Старо куче

Мнения: 603
Регистриран на: 15.12.19



За да получиш адекватен отговор, трябва да кажеш какво прави компилаторът с данните, когато са маркирани със static const struct.
Иначе (Name: "Waleri", Age: 49) създава value tuple. Ако static const struct има свойствата на value tuple (в C# има и друг вид tuple), значи отговора на 40oz е верен.
Свойствата на value tuple са тези - данните се пазят в стека, не в хийпа; данните НЕ СА immutable (за разлика от другия тип tuple); данните са променливи, а не пропъртита.

CODE
var valueTuple = (Name: "Waleri", Age: 49);
valueTuple.Age = 45;
var tuple = valueTuple.ToTuple();
tuple.Item2 = 5; // can't compile


Тъпълите много ги обичам. Другият тип, който е много як е record. Във F# го има, ама в C# още се канят да го добавят. Не знам, толкова ли е сложно това. Рекърдите са много удобни за създава на value types.

Това мнение е било редактирано от zahasoft на 31-01-2020, 06:50


--------------------
PM
Top
dvader
Публикувано на: 31-01-2020, 06:53
Quote Post


Group Icon
Име:
Група: VIP
Ранг: Почетен член

Мнения: 4832
Регистриран на: 12.07.05



QUOTE (zahasoft @ 31-01-2020, 06:36)
какво прави компилаторът с данните, когато са маркирани със static const struct.

Слага ги в ROM-a...

Като гледам, на С# няма да стане - с тия new явно всичко е рънтайм icon_sad.gif


--------------------
I find your lack of faith disturbing
PM
Top
zahasoft
Публикувано на: 31-01-2020, 07:06
Quote Post



Име:
Група: Потребител
Ранг: Старо куче

Мнения: 603
Регистриран на: 15.12.19



QUOTE (dvader @ 31-01-2020, 06:53)
QUOTE (zahasoft @ 31-01-2020, 06:36)
какво прави компилаторът с данните, когато са маркирани със static const struct.

Слага ги в ROM-a...

Като гледам, на С# няма да стане - с тия new явно всичко е рънтайм icon_sad.gif

Опасявам се, че дотнета не позволява подобно ниво на достъп. Иначе, с моите умения (как се изрази един от господарите - малко над джуниър) бих могъл лесно да насера всичко.

PS. Аз мислех, че тая памет е само за четене. Верно ли можете да ръчкате в нея? Ама то верно, че и аз съм си ъпдейтвал BIOS-a, кво се чудя.

Това мнение е било редактирано от zahasoft на 31-01-2020, 07:15


--------------------
PM
Top
JanBirdX
Публикувано на: 31-01-2020, 08:20
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 1710
Регистриран на: 21.02.05



const value tuple. За жалост няма пълно щастие.
PMEmail Poster
Top
zahasoft
Публикувано на: 31-01-2020, 08:30
Quote Post



Име:
Група: Потребител
Ранг: Старо куче

Мнения: 603
Регистриран на: 15.12.19



QUOTE (zahasoft @ 31-01-2020, 06:36)
Рекърдите са много удобни за създава на value types.

Искам да кажа value objects в контекста на DDD, не value types. Това е друго в дотнета.


--------------------
PM
Top
1 потребители преглеждат тази тема в момента (1 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

Topic Options Страници: (2) [1] 2  Reply to this topicStart new topicStart Poll

 


Copyright © 2003-2019 | BG Development | All Rights Reserved
RSS 2.0