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?
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
New contributor
add a comment |
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
New contributor
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
add a comment |
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
New contributor
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
c# generics static amazon-ecs entity-component-system
New contributor
New contributor
edited Mar 21 at 15:34
Uwe Keim
27.7k32134215
27.7k32134215
New contributor
asked Mar 21 at 15:26
user11220832user11220832
664
664
New contributor
New contributor
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
add a comment |
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
add a comment |
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.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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.
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.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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
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