@@IAmTimCorey What platforms do you suggest for interactive learning? For newer stuff like Blazor and MAUI. Also, please create some courses on MAUI and Blazor (forgetting about older versions of Blazor and focusing only on the latest things like the new template that allows to write once, run on Web, Mobile, Desktop, as previously web was missing).
I have the DEV pass for the C# Master Course. I was told that was the best course for learning C#. I made it mostly though it until about Winforms. I wasn't super interested in that so I cancelled Dev pass. However, now that I am seeing much more updated material here on your YT channel, I may renew. I am wondering why the Master Class has the older material if you've made much newer stuff with net 8.0/9.0? I'm in plural sight now to continue on my C# learning, but I would have preferred to stay on your site! Also, when is the C# for Unity gonna be published? I have been looking forward to that for some time now :)
There are a few things to answer here. First, WinForms isn't the old way of doing things. In fact, at Build 2024, Microsoft recommended it as the way to build desktop apps with WPF being another way if you needed the extra power. While WinForms has been around for a long time, it is still a modern way of building desktop apps. You can use .NET 8 with WinForms and WPF. Second, the C# Mastercourse intentionally covers everything from .NET Framework up through .NET 6 right now because when you actually get a job in software development, you will probably be working with something in that range. Yes, the cutting edge is nice, and the latest way to do things is always a draw, but if you only learn that then you will be ill-equipped to work in today's job market. That's why I cover such a range. Third, the C# Mastercourse is a course that I keep updated. I'll be putting out a new version of it sometime in 2025. It will still have .NET Framework in it, but it will also cover .NET through .NET 9. Keeping content updated with the latest version of .NET isn't the goal, since again, businesses don't typically use the latest version. However, I'm constantly releasing new courses with the latest stuff. My Blazor course is in .NET 8. I just released a C# Fundamentals training course where we build three small applications and debug a fourth. That uses .NET 8. I've got another course where we build an app in WinForms, WPF, and Blazor WebAssembly (the same app three times) that will come out in about a week. As for the Game Development Mastercourse, that is still under production. That's actually what I'm working on recently. New modules of that should come out shortly. As for the final date, I would like to complete it early next year, if not sooner. It all depends on how much work it takes to create the new .NET 9 content (which comes out the middle of November) and how the holidays interfere. I've been taking my time in that course because I want to teach the latest and greatest. We just switched over to Unity 6, which officially releases soon.
@@IAmTimCorey Hi! thank you for taking the time to answer. I think I poorly worded my questions. I didn't mean to imply winforms was the old way of doing things. I just stopped the Master Class right around there because I am more interested in learning pure coding for now and I (just my preference) am not keen on learning winforms at this stage. What I meant by 'older' was the class has a lot of framework stuff (which I understand through your lessons that it's great to learn that, and not a lot is different) but then this class here is .NET 8. I guess I was just confused that if you have new classes why they weren't in the master class is all. I didn't even see them until I came here. I apologize if my tone/delivery came across poorly. I really like your teaching style and going through all the projects. I learned a TON in a short time. Now that I know there's more C# material on your site (I was under the assumption all C# content was rolled under the MC), I am stoked to keep pushing on. I am retired (for now) and just started learning everything from scratch. I started making a video game for my son and that's how this all started. Now I'm hooked. I am really looking forward to the Unity course and appreciate that you post so much here (which I only found today). So, to sum up: Thank you for replying, I am sorry if my message sounded combative, and I am stoked to continue learning from you.
No worries. I'm glad I was able to help. And yes, the C# Mastercourse is just a course. It is an extremely comprehensive course, and covers a LOT of topics around C#, but I have many other courses that cover other areas of C# or that go into much greater depth in specific areas.
You aren't there yet! How about checking what happens when a negative number is entered? I added a && clause to the evaluation of validGuess. Another tiny thing - how about {guessCount} guess{(guessCount == 1 ? "" : "es")} to make it more like writing "guess(es)"? Great video, though, and much appreciated.
I was ok with people entering negative guesses. At that point, you are punishing yourself. The way to "win" is to get the lowest number of guesses. Going backwards won't win you anything. It will just increase your guess count. As for the guess suggestion, yep, you could do that.
This video is one of four apps in the paid course. In that course, one of the apps is pre-existing. The section is called bug hunt. We hunt down bugs by reading the code and fixing them. I also have a whole section in the C# Mastercourse on debugging. I also have a number of videos on RUclips that cover debugging: www.youtube.com/@IAmTimCorey/search?query=debugging
No, they aren't the same thing. The verbatim string literal (@ symbol) allows for single-line literal strings. You can do multi-line, but it is messy. You also have to escape double quotes still. The verbatim string literal (""" characters) allow you to easily do multi-line and you do not need to escape double quotes. Also, if you decide that you want to have two double quotes in a row, you can use four double quotes to start and end the raw string literal.
We don't test validGuess before we've put a "real" value into the variable. Otherwise, we can accidentally never go through the while loop because we set it to the "wrong" initial value. That's why we have a do loop. So we can set the validGuess variable with real data, not just starter data, before we test it.
@@IAmTimCorey The initial value of a boolean is false.Since it is a do loop, we know it will run at least once, so why write out != false when !false does the same exact thing. Tell me how that's any different. I'm not just trying to argue, I want to understand what the difference is.
Ah, I see. I thought you were saying to use a while loop instead of a do loop. Instead, if I understand you now, you were saying that we could write "!validGuess" instead of "validGuess == false". That's a good question. The reason is because code is meant to be read by humans. When you are reading code, especially when you are quickly scanning it, the bang character (!) is easy to miss. So then it looks like you are looping if they give a valid guess rather than an invalid guess. By saying "== false", it is much easier to see. The compiler treats it the same, but it is easier to see as a human. I've seen people introduce bugs a number of times because they missed the bang character somewhere and thought the statement did the opposite of what it actually does.
it would be nice to have a shorter version of your tutorials. maybe without explaining anything just right the code in ten minutes and explain as minimal as possible. long versions are good too but can drain my energy
Also, just so you know, if you have the DevPass (or if you buy this course), this video is broken up into short videos. I believe this section is 12 videos instead of the one it is on RUclips. The other three apps are the same way. Most lessons are under 10 minutes.
Because it wasn't a null value. It was an empty string. An empty string is not null, so it tests it to see if it can convert the empty string to an integer. When it cannot, it returns false (which we are ignoring), and it sets the value of the integer to zero. Thus, zero for our first guess.
@NaftuliSinger - No, because that is a null check. Like I said, it isn't null. Since it isn't null, it uses the value we gave it from the console, not the fallback value. Therefore, it is zero.
Damn, COREY --- you beauty! You're the man! A legend for us C Sharpers !!!!!
Thanks!
@@IAmTimCorey What platforms do you suggest for interactive learning? For newer stuff like Blazor and MAUI. Also, please create some courses on MAUI and Blazor (forgetting about older versions of Blazor and focusing only on the latest things like the new template that allows to write once, run on Web, Mobile, Desktop, as previously web was missing).
This is awesome. Foundation is key.
Thanks!
I have the DEV pass for the C# Master Course. I was told that was the best course for learning C#. I made it mostly though it until about Winforms. I wasn't super interested in that so I cancelled Dev pass. However, now that I am seeing much more updated material here on your YT channel, I may renew. I am wondering why the Master Class has the older material if you've made much newer stuff with net 8.0/9.0? I'm in plural sight now to continue on my C# learning, but I would have preferred to stay on your site! Also, when is the C# for Unity gonna be published? I have been looking forward to that for some time now :)
There are a few things to answer here. First, WinForms isn't the old way of doing things. In fact, at Build 2024, Microsoft recommended it as the way to build desktop apps with WPF being another way if you needed the extra power. While WinForms has been around for a long time, it is still a modern way of building desktop apps. You can use .NET 8 with WinForms and WPF.
Second, the C# Mastercourse intentionally covers everything from .NET Framework up through .NET 6 right now because when you actually get a job in software development, you will probably be working with something in that range. Yes, the cutting edge is nice, and the latest way to do things is always a draw, but if you only learn that then you will be ill-equipped to work in today's job market. That's why I cover such a range.
Third, the C# Mastercourse is a course that I keep updated. I'll be putting out a new version of it sometime in 2025. It will still have .NET Framework in it, but it will also cover .NET through .NET 9.
Keeping content updated with the latest version of .NET isn't the goal, since again, businesses don't typically use the latest version. However, I'm constantly releasing new courses with the latest stuff. My Blazor course is in .NET 8. I just released a C# Fundamentals training course where we build three small applications and debug a fourth. That uses .NET 8. I've got another course where we build an app in WinForms, WPF, and Blazor WebAssembly (the same app three times) that will come out in about a week.
As for the Game Development Mastercourse, that is still under production. That's actually what I'm working on recently. New modules of that should come out shortly. As for the final date, I would like to complete it early next year, if not sooner. It all depends on how much work it takes to create the new .NET 9 content (which comes out the middle of November) and how the holidays interfere. I've been taking my time in that course because I want to teach the latest and greatest. We just switched over to Unity 6, which officially releases soon.
@@IAmTimCorey Hi! thank you for taking the time to answer. I think I poorly worded my questions. I didn't mean to imply winforms was the old way of doing things. I just stopped the Master Class right around there because I am more interested in learning pure coding for now and I (just my preference) am not keen on learning winforms at this stage. What I meant by 'older' was the class has a lot of framework stuff (which I understand through your lessons that it's great to learn that, and not a lot is different) but then this class here is .NET 8. I guess I was just confused that if you have new classes why they weren't in the master class is all. I didn't even see them until I came here. I apologize if my tone/delivery came across poorly. I really like your teaching style and going through all the projects. I learned a TON in a short time.
Now that I know there's more C# material on your site (I was under the assumption all C# content was rolled under the MC), I am stoked to keep pushing on. I am retired (for now) and just started learning everything from scratch. I started making a video game for my son and that's how this all started. Now I'm hooked. I am really looking forward to the Unity course and appreciate that you post so much here (which I only found today). So, to sum up: Thank you for replying, I am sorry if my message sounded combative, and I am stoked to continue learning from you.
No worries. I'm glad I was able to help. And yes, the C# Mastercourse is just a course. It is an extremely comprehensive course, and covers a LOT of topics around C#, but I have many other courses that cover other areas of C# or that go into much greater depth in specific areas.
You aren't there yet! How about checking what happens when a negative number is entered? I added a && clause to the evaluation of validGuess. Another tiny thing - how about {guessCount} guess{(guessCount == 1 ? "" : "es")} to make it more like writing "guess(es)"?
Great video, though, and much appreciated.
I was ok with people entering negative guesses. At that point, you are punishing yourself. The way to "win" is to get the lowest number of guesses. Going backwards won't win you anything. It will just increase your guess count.
As for the guess suggestion, yep, you could do that.
Console.Write("Please enter a number: ");
int firstGuess;
while (!int.TryParse(Console.ReadLine(), out firstGuess) || firstGuess
Nice work!Is this video for beginners?
Beginners can absolutely do this, although people with more experience will still find value in it as well.
Hey Tim. I was wondering do you have any video covering debugging?
This video is one of four apps in the paid course. In that course, one of the apps is pre-existing. The section is called bug hunt. We hunt down bugs by reading the code and fixing them. I also have a whole section in the C# Mastercourse on debugging. I also have a number of videos on RUclips that cover debugging: www.youtube.com/@IAmTimCorey/search?query=debugging
@@IAmTimCorey Thank You Kindly Sir !!!
Are there more courses coming like this to test foundational knowledge?
Not just foundational knowledge, but yes.
@@IAmTimCorey music to my ears. Coming across your channel in 2018 was the best thing for my professional career.
Very nice video Tim, I found this really helpful, thank you, just one question, how come you don't separate the code into individual methods?
Why would we need the additional complexity of methods?
Not used to ””” always used @“ for literal string, is it right assume it equal to the same thing?
No, they aren't the same thing. The verbatim string literal (@ symbol) allows for single-line literal strings. You can do multi-line, but it is messy. You also have to escape double quotes still. The verbatim string literal (""" characters) allow you to easily do multi-line and you do not need to escape double quotes. Also, if you decide that you want to have two double quotes in a row, you can use four double quotes to start and end the raw string literal.
@@IAmTimCorey thanks for your reply, good to know
Hello Tim how to register in your website to buy a course ?
No need to register. Just go to the course and click buy. It will set up the accounts you need automatically.
What keyboard do you use?
I use the MX Keys by Logitech. I absolutely love it. Whenever one of my team members needs a keyboard, that's what they get. They love it too.
I'm curious why your do while loop test isn't while(!validGuess) which does the same thing and, in this context should be completely clear.
We don't test validGuess before we've put a "real" value into the variable. Otherwise, we can accidentally never go through the while loop because we set it to the "wrong" initial value. That's why we have a do loop. So we can set the validGuess variable with real data, not just starter data, before we test it.
@@IAmTimCorey The initial value of a boolean is false.Since it is a do loop, we know it will run at least once, so why write out != false when !false does the same exact thing. Tell me how that's any different. I'm not just trying to argue, I want to understand what the difference is.
Ah, I see. I thought you were saying to use a while loop instead of a do loop. Instead, if I understand you now, you were saying that we could write "!validGuess" instead of "validGuess == false". That's a good question. The reason is because code is meant to be read by humans. When you are reading code, especially when you are quickly scanning it, the bang character (!) is easy to miss. So then it looks like you are looping if they give a valid guess rather than an invalid guess. By saying "== false", it is much easier to see. The compiler treats it the same, but it is easier to see as a human. I've seen people introduce bugs a number of times because they missed the bang character somewhere and thought the statement did the opposite of what it actually does.
hh...that NOPE is message from users to the developer, am I joke to you. loving it
😀
Code is meant to be read by humans said no python expert ever...
😂
Amazing Lessons ✅
the $"" "" ""
"" "" "" Is The Most Information Value That I learn Today Thank You
I am glad it was helpful.
it would be nice to have a shorter version of your tutorials. maybe without explaining anything just right the code in ten minutes and explain as minimal as possible.
long versions are good too but can drain my energy
I have a whole series called 10-minute training. You can find the playlist on this channel.
His 10-minute series is actually pretty amazing. Great for introductions (and sometimes more) to every relevant topic.
Also, just so you know, if you have the DevPass (or if you buy this course), this video is broken up into short videos. I believe this section is 12 videos instead of the one it is on RUclips. The other three apps are the same way. Most lessons are under 10 minutes.
😂
?
56:21 Why did it set the currentValue to 0 and not to 1 as specified for null values in your code at line 15?
Because it wasn't a null value. It was an empty string. An empty string is not null, so it tests it to see if it can convert the empty string to an integer. When it cannot, it returns false (which we are ignoring), and it sets the value of the integer to zero. Thus, zero for our first guess.
@@IAmTimCoreySo in which case would it actually add 1 (as specified in ?? "1") ?
@@NaftuliSinger Try F6 and hit "Enter"
@NaftuliSinger - No, because that is a null check. Like I said, it isn't null. Since it isn't null, it uses the value we gave it from the console, not the fallback value. Therefore, it is zero.
@@IAmTimCorey Gotcha