+ 3
C# unsafe mode
started with C but had some problems with the pointers/memory management so I decided to not, at least for now and learn an easier language first. I chose C#, then learned that C# has an UNSAFE MODE that uses pointers and I think memory management, that scared me to use it because of my experience with C. What I’ve researched is, a C# programmer would probably never/VERY rarely need to use UNSAFE MODE. I thought maybe it would be a better idea to start with Java since it does not have unsafe mode at all?
21 Answers
+ 1
As Shen Bapiro said, other languages are based on C but have much easier ways to do things. You are unlikely (in modern computing) to absolutely have to save that couple of bytes per iteration like they did in the 70s & 80s.
Learning C instead of python is like: building a house in the wilderness with no tools nor materials, python is like having a hardware store a few minutes away.
Build your own "tools" first (your own understanding), use pre-built shortcuts afterwards! 🔨🐒
+ 6
You will not have to deal with unsafe in C# especially if you are just learning.
just let C# CLR (Common Language Runtime) do the memory management.
even in C safety is not an excuse not to learn it. it's actually good to deal with memory management to understand how it works, instead of letting some virtual machine layer do it for you.
as a learner you don't have to worry about safety for now.
+ 5
You don't have to worry about unsafe. Unless you're making a 30 million dollar video game, or know what you are doing and want to use unmanaged code for some reason, it not something that is likely to come up.
+ 3
Thank you so much, is it ok for me to go with Java for now?
+ 3
Even working with unity, you can freely learn and take C# coding very far without ever running into a situation where you have too use unsafe mode. Yes there are many work around if ever you run into a situation where you think you need to manually allocate memory or something. There are c++ libraries that can interface with C#. You can add one to your c# project. There are a few keywords such a "ref" and "out" that address some of the reference issues that might come up very rarely. It might seem obvious but using unsafe code is not recommended. It doesn't mean your code will be unsafe. It just means .net can't verify that it is safe. By the time you run into limitation that can be solved with unmanaged code, you should probably be thinking about learning c++ and that will not be any time soon after learning c#.
+ 2
I would also point out that Java has it's own memory allocation issues and similar unsafe libraries. Like in C#, these are very advanced topics in Java, and shouldn't come up very often but the same advice applies.
+ 2
bro whats wrong with memory management ? its a fun topic to learn and learning what the heap and pointers can do gets u one of the most powerful features in C. dont get intimidated by a chapter simply because its hard to do. just start learning it and keep failing until u fully understand and master how it works
+ 2
dynamic memory allocation and manual memory management is going to be important once you get to the realm of data structutes. remember those Lists, Hashmap, Stack, Trees and other data structures u find on high level languages like C#?
all of them are implemented using dynamic memory allocation and pointers, understanding how to create them yourself is going to be necessary if you want to make more complex data structure other than a simple static array
+ 2
if you just started to learn programming, C would be the best language to learn in my opinion. its simple and barebones enough to the point where it forces you to think like a computer. which helps a lot in understanding what exactly happens when your program runs on the processor. if you master learning C, learning other languages is like a piece of cake since most of them are derivatives based off C, like C#, C++, Python, Java . practically C with extra features. C teaches u the core fundamentals of programming and i think it will reward u in the long term if u want to learn lots of other languages in the future
+ 1
Let me be honest, 99% of C # developers did not use unsafe.
Of course, I had to use a C ++ library myself, and it was a very valuable experience.
The ref keyword is commonly used for addressing and as an alternative to a pointer. This is also very rare.
+ 1
Thank you so much for the response
+ 1
Python can be seen as a higher level language then C# or Java. Python allocates memory through it's memory manager which is highly efficient and flexible. It doesn't handle garbage collection or heaps the same as c#. Without going too deep, no, python doesn't exactly have anything similar. You are kind of stuck with the python structure of making objects.
+ 1
Thank you. Actually, i guess maybe i understand it somewhat, what i dont get is how i would use memory allocation in real life situation
+ 1
Thank you for all the information, would you reccomend i learn C or C++ first?
+ 1
well i think it's upto you whether u want to start off with a high level language or not. im just stating what learning C first would help you before getting into other languages, if you want speed and simplicity C is always the best way to program something.
+ 1
Thank you
0
Thank you. Is it safe to say that i dont have to worry about UNSAFE MODE for now at least even if i am working in UNITY? Any feedback would be greatly appreciated, thank you
0
Also, so i understand correctly, would it be possible in a situation where UNSAFE MODE would be nessesary, to have another way to go through it? A workaround? In other words SAFE MODE?
0
What about Python? Does Python have anyrging similar to UNSAFE MODE?
0
Thank you