Storing components in static classes viable?Are static class variables possible?When to use static classes in C#Can I add extension methods to an existing static class?Difference between static class and singleton pattern?What does “static” mean in C?Static readonly vs constStatic variables in JavaScriptStatic constant string (class member)Why are static classes considered “classes” and “reference types”?Why are static variables considered evil?

What defines a dissertation?

How will losing mobility of one hand affect my career as a programmer?

Is there any easy technique written in Bhagavad GITA to control lust?

Why does John Bercow say “unlock” after reading out the results of a vote?

Applicability of Single Responsibility Principle

Implement the Thanos sorting algorithm

Modify casing of marked letters

What's the purpose of "true" in bash "if sudo true; then"

Is there any reason not to eat food that's been dropped on the surface of the moon?

apt-get update is failing in debian

Why "be dealt cards" rather than "be dealing cards"?

is this a spam?

What is the intuitive meaning of having a linear relationship between the logs of two variables?

Everything Bob says is false. How does he get people to trust him?

Are there any comparative studies done between Ashtavakra Gita and Buddhim?

What will be the benefits of Brexit?

What is the oldest known work of fiction?

Do I need a multiple entry visa for a trip UK -> Sweden -> UK?

Can I Retrieve Email Addresses from BCC?

Increase performance creating Mandelbrot set in python

Why is delta-v is the most useful quantity for planning space travel?

Understanding "audieritis" in Psalm 94

Why Were Madagascar and New Zealand Discovered So Late?

The plural of 'stomach"



Storing components in static classes viable?


Are static class variables possible?When to use static classes in C#Can I add extension methods to an existing static class?Difference between static class and singleton pattern?What does “static” mean in C?Static readonly vs constStatic variables in JavaScriptStatic constant string (class member)Why are static classes considered “classes” and “reference types”?Why are static variables considered evil?













0















I´m struggling with a custom implementation of an ECS in C#.



I store my components in static classes like this:



internal static class ComponentStorage<T> where T : struct, IComponent

private static readonly T[] components = new T[capacity];
public static ref T Get(int index)

return ref components[index];

public static void Add(T component, int index)

components[index] = component;




I do this for two main reasons:



  • it allows me to store my components - as they are - in contigous struct arrays

  • i can easily obtain the components without boxing/unboxing

I manage the components inside a manager class with tables etc.



My implementation is working fine so far but im nervous building upon this method.



  • Is there any anything im missing like hidden boxing because of the generic statics? performance tests went as expected but i havent implemented any SystemManager kind of thing yet because its quite tricky to do so i dont want start with that if im wrong all along.

i couldnt find a proper answer for the static-generic-boxing question and i havent seen any ecs utilizing this yet.










share|improve this question









New contributor




user11220832 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.















  • 1





    I do this all the time without issue. You shouldn't have any issues with boxing because the generic class is always treating the values at the specified type.

    – Grax
    Mar 21 at 19:32











  • For the record, I'm not doing this within ECS, but I am using it in multiple C# applications.

    – Grax
    Mar 21 at 19:33















0















I´m struggling with a custom implementation of an ECS in C#.



I store my components in static classes like this:



internal static class ComponentStorage<T> where T : struct, IComponent

private static readonly T[] components = new T[capacity];
public static ref T Get(int index)

return ref components[index];

public static void Add(T component, int index)

components[index] = component;




I do this for two main reasons:



  • it allows me to store my components - as they are - in contigous struct arrays

  • i can easily obtain the components without boxing/unboxing

I manage the components inside a manager class with tables etc.



My implementation is working fine so far but im nervous building upon this method.



  • Is there any anything im missing like hidden boxing because of the generic statics? performance tests went as expected but i havent implemented any SystemManager kind of thing yet because its quite tricky to do so i dont want start with that if im wrong all along.

i couldnt find a proper answer for the static-generic-boxing question and i havent seen any ecs utilizing this yet.










share|improve this question









New contributor




user11220832 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.















  • 1





    I do this all the time without issue. You shouldn't have any issues with boxing because the generic class is always treating the values at the specified type.

    – Grax
    Mar 21 at 19:32











  • For the record, I'm not doing this within ECS, but I am using it in multiple C# applications.

    – Grax
    Mar 21 at 19:33













0












0








0








I´m struggling with a custom implementation of an ECS in C#.



I store my components in static classes like this:



internal static class ComponentStorage<T> where T : struct, IComponent

private static readonly T[] components = new T[capacity];
public static ref T Get(int index)

return ref components[index];

public static void Add(T component, int index)

components[index] = component;




I do this for two main reasons:



  • it allows me to store my components - as they are - in contigous struct arrays

  • i can easily obtain the components without boxing/unboxing

I manage the components inside a manager class with tables etc.



My implementation is working fine so far but im nervous building upon this method.



  • Is there any anything im missing like hidden boxing because of the generic statics? performance tests went as expected but i havent implemented any SystemManager kind of thing yet because its quite tricky to do so i dont want start with that if im wrong all along.

i couldnt find a proper answer for the static-generic-boxing question and i havent seen any ecs utilizing this yet.










share|improve this question









New contributor




user11220832 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.












I´m struggling with a custom implementation of an ECS in C#.



I store my components in static classes like this:



internal static class ComponentStorage<T> where T : struct, IComponent

private static readonly T[] components = new T[capacity];
public static ref T Get(int index)

return ref components[index];

public static void Add(T component, int index)

components[index] = component;




I do this for two main reasons:



  • it allows me to store my components - as they are - in contigous struct arrays

  • i can easily obtain the components without boxing/unboxing

I manage the components inside a manager class with tables etc.



My implementation is working fine so far but im nervous building upon this method.



  • Is there any anything im missing like hidden boxing because of the generic statics? performance tests went as expected but i havent implemented any SystemManager kind of thing yet because its quite tricky to do so i dont want start with that if im wrong all along.

i couldnt find a proper answer for the static-generic-boxing question and i havent seen any ecs utilizing this yet.







c# generics static amazon-ecs entity-component-system






share|improve this question









New contributor




user11220832 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.











share|improve this question









New contributor




user11220832 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.









share|improve this question




share|improve this question








edited Mar 21 at 15:34









Uwe Keim

27.7k32134215




27.7k32134215






New contributor




user11220832 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.









asked Mar 21 at 15:26









user11220832user11220832

664




664




New contributor




user11220832 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.





New contributor





user11220832 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.






user11220832 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.







  • 1





    I do this all the time without issue. You shouldn't have any issues with boxing because the generic class is always treating the values at the specified type.

    – Grax
    Mar 21 at 19:32











  • For the record, I'm not doing this within ECS, but I am using it in multiple C# applications.

    – Grax
    Mar 21 at 19:33












  • 1





    I do this all the time without issue. You shouldn't have any issues with boxing because the generic class is always treating the values at the specified type.

    – Grax
    Mar 21 at 19:32











  • For the record, I'm not doing this within ECS, but I am using it in multiple C# applications.

    – Grax
    Mar 21 at 19:33







1




1





I do this all the time without issue. You shouldn't have any issues with boxing because the generic class is always treating the values at the specified type.

– Grax
Mar 21 at 19:32





I do this all the time without issue. You shouldn't have any issues with boxing because the generic class is always treating the values at the specified type.

– Grax
Mar 21 at 19:32













For the record, I'm not doing this within ECS, but I am using it in multiple C# applications.

– Grax
Mar 21 at 19:33





For the record, I'm not doing this within ECS, but I am using it in multiple C# applications.

– Grax
Mar 21 at 19:33












0






active

oldest

votes











Your Answer






StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");

StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);

else
createEditor();

);

function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);



);






user11220832 is a new contributor. Be nice, and check out our Code of Conduct.









draft saved

draft discarded


















StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55283903%2fstoring-components-in-static-classes-viable%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown

























0






active

oldest

votes








0






active

oldest

votes









active

oldest

votes






active

oldest

votes








user11220832 is a new contributor. Be nice, and check out our Code of Conduct.









draft saved

draft discarded


















user11220832 is a new contributor. Be nice, and check out our Code of Conduct.












user11220832 is a new contributor. Be nice, and check out our Code of Conduct.











user11220832 is a new contributor. Be nice, and check out our Code of Conduct.














Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid …


  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.

To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55283903%2fstoring-components-in-static-classes-viable%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

How to preserve electronics (computers, tablets and phones) for hundreds of years Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 23, 2019 at 23:30 UTC (7:30pm US/Eastern) The network's official Twitter account is up and running again. What content…How might modern humans leave a message for 50,000 years?How would an aquatic race develop computers?How do we make computers care for human life?Keeping supplies for 1000 yearsWhat will cell phones become in 100 years?What body armor protects against a laser?Could a society attain 1800s technology if limited to using copper and bronze?Electricity power (magic) and electronicsScavenging metal resources in post-apocalypse after 100 yearsWhy would precursors create devices that can survive and still work after hundreds of years?

155 수학 과학 기타 둘러보기 메뉴eh추가해eh문서를 완성해

Convert JSON to MapSimplest way to convert a string representing JSON array into Java array List of key value pairsHow to take String JSON values into HashMapConvert a JSON String to a HashMapCreating BSON object from JSON stringJSONObject - How to get a value ?Better Map ConstructorReading JSON from Url javaUpdate columns if input values are not null otherwise ignore and keep the existing values of column in databaseHow to store object represented as Json string into Couchbase Lite?Go JSON into MapHow do I efficiently iterate over each entry in a Java Map?Sort a Map<Key, Value> by valuesHow to round a number to n decimal places in JavaCan comments be used in JSON?How do I read / convert an InputStream into a String in Java?How can I pretty-print JSON in a shell script?What is the correct JSON content type?How can I deserialize JSON to a simple Dictionary<string,string> in ASP.NET?Why does Google prepend while(1); to their JSON responses?Parse JSON in JavaScript?