Could anybody provide a good source for learning .NET (ie: without the "RTFM" attitude), it is the manual I'm looking for. I would like to have a good source for .NET programming in general. I have the book from vb.com which is a good source for Autocad and the scope it covers, but there is still a requirement to "understand" .NET programing.
I'm not expecting a manual that covers everything as I don't really see any way around 'learn by doing' to accomplish what you want but there must be something out there to help people get started with programming. Any ideas, references?
Thanks,
Dave
I got "VB.NET Programming for AutoCAD Customization" by Jerry Winters. I found it very helpful.
HTH
Yes vbcad.com, that is the book I meant to refer to - it IS a good book for learning .NET for Autocad, and it stays focused on and within Autocad. Thanks for bringing it up. What I am looking for is .NET programming but more generic in nature, a lot of the stuff out there is intended for people who already know programming, there must be something explaining things for people just starting out.
Who makes such a book?
What constitutes an assembly, managed vs unmanaged code, explain COM Interop.
When do you create a 'Property' and how is it used?
Where is the Autodesk.Autocad.Interop namespace documented?
Why? Why? Why? Why?
How do you determine when to use Marshal.ReleaseObject and when it is not required.
It is driving me crazy trying to figure out and understand all this stuff. Looking for a good reference.
To get you started with .NET in general:
It won 't teach you anything regarding Autocad, but it will help with many of those basic questions. As for the interops, look in the ActiveX/COM help files for how to use those.
I agree with Jeff_M and Jerry Winters book is not a good book to learn about .NET programming
From the little knowledge I have picked up and I sure someone has a much better info
and examples are for info and from memory-----the CIL code is from idaslm that is not from memroy.
No book or great teacher can force information in your head.
There is no book or manual or some magical hidden reference somewhere that will teach you about .NET programming.
The only way to learn and become better at anything is experience and you can use those reference's to guide and aid your experience.
Some things that have helped me.
-----Gain Expirence & CODE CODE CODE CODE
Code, Code, Code, Code.........
Most important is to keep coding
Start by doing examples and try writing applications about things you are interested in.
Start coding now and write your first application with 500 lines of code and
482 lines of it will be if and nested if statements.
So what, you will learn better and more advanced techniques and come back and get practice refactoring.
Once you start getting more experience under your belt you will be able to start associating what you read with actual real life experiences.
And you will be able to read and learn new things and actual digest because of the association to actual experience.
-----Learn and understand the fundamentals
Get a book on basic programming logic that is not language specific to learn the fundamentals, most .NET books assume you understand basic concepts.
-----Get a basic non-detailed overview and see how it fits together
People put down the 'Learn C# in 24 hours' books but I think they are good for starting out.
For me when learning a new subject I like to get a very high level look at it so you get a basic idea of the subject.
The 24 hour books will not teach you to start cranking out apps but you get some general ideas, and see that you must learn these fundamentals to understand other aspects and the reason for learning them.
-----Learning how to find information
No reason to remeber anything you can look up or it is better to understand a concept and know where to find info
than just remeber them.
Join very popular .NET forums that attract a lot first year or first programming class members, and try to answer their question, and do not look at other answers until you come up with something.
The reason for that is by finding the answer you learning how and where to find information.
More experienced members will post links that add more resources to your toolset and you can compare your answer.
You will also see a variety of subjects and pick up what to look for or where to go when you need to accomplish a certain task.
For example: Some subject you are familar with you have certain links you go to for info or for a particular aspect you might use a certain book that has great info on that aspect, but you know where to go find the info you need.
-----Debug
Watching how a program executes line by line and watching how the objects change state.
Making the code come alive and being able to associate the code with visual experience.
If you do not step through code or print all steps and state change you really do not know what the code the doing.
You are completely blind and same as running software that you buy.
-----Pick certain areas to concentrate on
I understand that there is so much out there and you have pick and choose what to learn.
And with .NET it makes programming tasks easier but at the same time hides the fundamental concepts from you.
For example a simple set of instructions to add 2 and 6
C#
int x = 2; int y = 4; int total = x + y;
and VB
Dim x As Integer = 2 Dim y As Integer = 6 Dim total As Integer = x + y
Say you added Console.Writeline(total) to the end.
So you could understand that as
1. Print the total variable to console screen
2.Total is a lvalue which persist beyond a single expression and lvalue expression refer to memory locations.
So to get the value in total, Under the hood it does 3 steps
gets the address for total
get the 32 0's and 1's at the address and the following 3 address locations since it is a int32(32bits 4 bytes==4 locations)
Run the algorithm to express the 00000000000000000000000000000110 as integer value and print to screen
In C++ the first 2 steps are like
int address = &total
*address
3. Not that I would never write it this way or fully understand it
(Side Note you cannot create global fields or members in C# but you could with CIL)
Here is another way to write the program
To really understand how that really works you need to understand the code
ldc.i4.2 //Load Constant int32 2 //--- Push 2 on stack as int32 stloc.0 //Store into local Variable 0 //--- Pop value from stack into local variable 0 ldc.i4.4 //Load Constant int32 4 //--- Push 4 on stack as int32 stloc.1 //Store into local Variable 1 //--- Pop value from stack into local variable 1 ldloc.0 //Load local varaible 0 onto evaluation stack //--- Load local variable 0 onto stack ldloc.1 //Load local varaible 1 onto evaluation stack //--- Load local variable 1 onto stack add //--- Add stloc.2 //Store into local Variable 2 //--- Pop value from stack into local variable 2 ldloc.2 //Load local varaible 2 onto evaluation stack //--- Load local variable 2 onto stack
or go another level deeper and write it as
0x18 //ldc.i4.2 0x0A //stloc.0 0x1A //ldc.i4.4 0x0B //stloc.1 0x06 //ldloc.0 0x07 //ldloc.1 0x58 //add 0x0C //stloc.2 0x08 //ldloc.2
or go deeper to point where you try to watch voltage change at memory locations.
That is tough where to decide how deep you need to go for a understanding required to meet you needs.
----Final points
You have to enjoy it and have the drive to learn
Start doing Crystal Meth or get a prescription to a amphetamine so you can stay for days coding---just joking
Thanks, I looked through the books they had there last night and ordered this one which should arrive Friday.
http://www.amazon.com/Murachs-Visual-Basic-2010-Boehm/dp/1890774588/ref=pd_sim_b_1
This one also looked appealing:
http://www.amazon.com/Beginning-Visual-Basic-2010-Programmer/dp/0470502223/ref=pd_sim_b_7
My thinking was these books sounded like they were for beginners but broad enough for reference when I needed them, I guess I'll find out about the first book next week.
With that done, I had a little mini breakthrough this morning after removing the acmgd and acdbmgd references, with a BIG thanks to this page:
http://docs.autodesk.com/ACD/2011/ENU/filesMDG/WS73099cc142f48755-5c83e7b1120018de8c0-2202.htm