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

Kamusi Yaliyomo Aina za kamusi | Muundo wa kamusi | Faida za kamusi | Dhima ya picha katika kamusi | Marejeo | Tazama pia | Viungo vya nje | UrambazajiKuhusu kamusiGo-SwahiliWiki-KamusiKamusi ya Kiswahili na Kiingerezakuihariri na kuongeza habari

Swift 4 - func physicsWorld not invoked on collision? The Next CEO of Stack OverflowHow to call Objective-C code from Swift#ifdef replacement in the Swift language@selector() in Swift?#pragma mark in Swift?Swift for loop: for index, element in array?dispatch_after - GCD in Swift?Swift Beta performance: sorting arraysSplit a String into an array in Swift?The use of Swift 3 @objc inference in Swift 4 mode is deprecated?How to optimize UITableViewCell, because my UITableView lags

Access current req object everywhere in Node.js ExpressWhy are global variables considered bad practice? (node.js)Using req & res across functionsHow do I get the path to the current script with Node.js?What is Node.js' Connect, Express and “middleware”?Node.js w/ express error handling in callbackHow to access the GET parameters after “?” in Express?Modify Node.js req object parametersAccess “app” variable inside of ExpressJS/ConnectJS middleware?Node.js Express app - request objectAngular Http Module considered middleware?Session variables in ExpressJSAdd properties to the req object in expressjs with Typescript