Create First Web Application in ASP.NET Core
Hello friends, I hope you all are having fun. In today's tutorial, we will create our First Web Application in ASP.NET Core. It's our 2nd tutorial in ASP.NET Core series and in our previous tutorial, we have had a detailed
Introduction to ASP.NET Core.
We have also installed Microsoft Visual Studio Community Edition 2019 in our previous tutorial and today we will create our first web application in it. After creating this web application, we will also have a look at its files and will understand the contents. So, let's create our First Web Application in ASP.NET Core:
Creating Web Application in ASP.NET Core
- First of all, start your Visual Studio which we have installed in previous tutorial.
- A pop up window will open up, where you can open your recent project or can create a new project, as shown in below figure:
- Here, click on the button says "Create a new project" and a new window will open up.
- This new window will ask for the type of application, you want to create i.e. Console App, Web App, Blazer App etc.
- As we want to create an ASP.NET Core Web Application so, I am going to select 3rd option in the list, as shown in below figure:
- After selecting ASP.NET Core Web Application, now click on the Next Button.
- On the next window, we have to provide the name & location for the project, as shown in below figure:
- Now click on the Create Button and in the next window, we need to select the template for your web application.
- Rite now, we are going to select the Empty Project, as I want to start from the scratch but in our incoming tutorials, we will cover almost all these templates.
- You will also need to uncheck the check box says "Configure for HTTPS", as shown in below figure:
- So, select the Empty Template for your ASP.NET Core web application and click the Create Button.
- As you can see at the top of above figure that we are using ASP.NET Core 3.1 that's the latest stable .NET framework SDK.
- When you click on the Create Button, Visual Studio will create your web application, as shown in below figure:
- As we have selected the Empty template, that's why we don't have much files in the solution explorer and this web app won't do anything except printing " Hello World " on execution.
- In order to execute our first web application, we need to click on the IIS Express play button, at the top menu bar.
- Our default browser will open up and Hello World will be printed in it, as shown in below figure:
- The link of this page is localhost:51640, as its on localhost rite now and the its port is 51640.
- We will discuss the flow of How this web app works and what's IIS Express in our coming lectures.
So, rite now we have a simple working web application in ASP.NET MVC which simply prints Hello World. Now let's understand the files automatically created by Visual Studio in Empty Template:
ASP.NET Core Project File
- If we have a look at the Solution Explorer, the we can see that visual studio has created few files for us, as shown in below figure:
- In order to open the project file, we have to right click on the Project's name and then click on Edit Project File.
- A new code file will open up with an extension .csproj, cs stands for C# & proj for project. This file is called the ASP.NET Core Project File.
- In previous versions of ASP.NET, we have to unload our project in order to open this project file but in Core, we can simply click on this Edit option to open Project File.
- If programming language is visual basic, then extension of project file will be .vbproj, vb for visual basic & proj for project.
- The only element we have in our web application's project file is Target Framework and the value we have set is netcoreapp3.1.
- This element, as the name implies, decides the target framework for our app and if you remember, while creating this project, we have selected .NET Core Framework 3.1.
- This value inside Target Framework tag is called Target Framework Moniker (TFM ), so the TFM of .NET Core 3.1 is netcoreapp3.1.
ASP.NET Core Program File
- Next file we are gonna open is Program.cs, its a C# class file, thus has an extension of .cs.
- Now let's have a look at its code:
- As you can see in above code that we have a class named Program and inside this class we have our Main Method.
- This Main Method is the entry point of our compiler i.e. when our web App executed then this Main method is called.
- If you have worked on any previous versions of .NET framework, then you must have seen this Main method there as well, in fact this web App executes as a console application.
- Within this Main Method, we have called CreateHostBuilder Method, its implemented below Main Method and returns an object that implements IHostBuilder.
- We are passing command line arguments to this CreateHostBuilder Method and then building our web host, which is going to host our web application and finally we are running our web app.
- If we have a look at the CreateHostBuilder Method, then you can see that we are using webBuilder Method and then calling the extension Method Startup.
- This WebBuilder Method is responsible for creating the web host on which our web app is going to host.
- This Startup extension method is available in our next file named Startup.cs, so let's discuss it's code:
ASP.NET Core Startup File
- Below Program File, we have Startup.cs file in our Solution Explorer.
- So, let's open this file and here's its code:
- This Startup Class is called by the CreateHostBuilder Method in Program File.
- Inside this Startup class we have two methods, ConfigureServices & Configure.
- ConfigureServices Method is used for the configuration of services, required for our web application.
- Configure Method is used to configure the request processing pipeline for our web application.
- This method has Hello World in it, which is actually printing on the page, we will discuss this method in coming tutorials in detail.
ASP.NET Core launchSettings,json File
- launchSettings.json file is placed inside Properties, so open this file.
- This file is only required for development purposes on the local machine, when we are publishing our web App then we don't need this file.
- This file actually contain the settings for the hosting environment, as shown in below figure:
- You can see in above code that first we have iiSettings and then profiles.
- In profiles, we have two profiles named IIS Express & TheEngineeringProjects, which is also the name of our project.
- When we run our project from visual studio, then this IIS Express profile is called and if you remember, the port number was same as in iisSettings i.e. 51640.
- But if you run this app from Console, then TheEngineeringProjects profile will be called and in that case port number will be 5000.
ASP.NET Core appSettings.json File
- That's the settings file for ASP.NET Core web application.
- We use this file to store some hard coded values or settings etc., we will discuss it in detail later.
So, that was all for today. I hope you have completely understood the basic structure of our ASP.NET Core web application. In the next tutorial, we will have a look at Middleware in ASP.NET Core. Till then take care & have fun !!!
Introduction to ASP.NET Core
Hello everyone, I hope you all are doing great. Today, I am going to start this new series on ASP.NET Core and it's our first tutorial in this series. I will start from basics and will slowly move towards complex concepts. So, if you haven't worked on ASP.NET then you don't need to worry about that but you must have some basic knowledge of C# and object oriented programming.
I will use Visual Studio 2019 for these tutorials, it's community version is free to use and I will use C# language for developing ASP.NET Core web applications. So, let's first have a look at what is ASP.NET Core:
Introduction to ASP.NET Core
- ASP.NET Core (originally deemed as ASP.NET xNext & was going to named as ASP.NET 5) is an open source, modular, cross platform and high performance Framework used to build advanced cloud based Internet Applications i.e.
- Web Application.
- Android Application.
- IOS Application.
- It's built ( rewrite ) completely from scratch by Microsoft & its vast community (as its open source) and combines ASP.NET MVC & ASP.NET Web API in a single package, which were previously available as separate entities.
- Although Core is a completely new framework but still it has quite a lot of resemblance with ASP.NET so if you have already worked on ASP.NET then Core won't be that difficult for you.
- As ASP.NET Core is an open source framework, so you can download or update its code from respective repositories on Github.
Why use ASP.NET Core ?
Let's have a look at few benefits of using ASP.NET Core:
1. Cross Platform
- The first & foremost advantage of ASP.NET Core is Cross Platform accessibility. In ASP.NET, you can only host your application on Windows platform but that's not the case with ASP.NET Core, you can host its applications across different platforms i.e.
- Linux.
- Windows.
- macOS.
- UBuntu.
- Or any self host server.
2. Unified Programming Model
- ASP.NET Core follows Unified Programming Model, that's why both MVC & API Controller classes inherit from single Controller base class, which returns IActionResult.
- IActionResult, as the name implies, is an Interface and has a lot of implementations and two of most commonly used are:
- In case of Web Apis, we get JsonResult and in case of Web MVC we can get both of them.
- In previous versions of ASP.NET, we have separate Controller classes for Web MVC & Web API.
3. Dependency Injection
- ASP.NET Core also has builtin support for dependency Injection, which makes it too flexible and conventional to use.
- Normally we use class constructors to inject dependencies and is called Constructor Injection.
- We will cover them in detail in upcoming tutorials, so if you are not getting this stuff then no need to worry.
4. Modular Framework
- ASP.NET Core also follows modular framework and uses middle-ware components which makes the flow of the app smooth.
- Microsoft has provided a lot of built-in middle-ware components for different purposes i.e. authentication, verification, File Fetching etc.
- We can also create custom middle-ware components as well in AP.NET Core.
5. Open Source
- ASP.NET Core is an open source framework and thus has a vast community on GitHub and Forum etc., that's why it's evolving rapidly and has become extremely powerful.
- You can get detailed and instant help on Core online quite easily.
6. Development Environment
- We can use Microsoft Visual Studio or Microsoft Visual Code for building our ASP.NET Core Applications.
- We can also use third party editors i.e. sublime etc. for ASP.NET Core.
Prior Knowledge Required for this Course
- If you haven't studied ASP.NET then no need to worry as we are gonna start from scratch and will cover all concepts.
- But you must have good understanding of C# concepts, so if you are not that good in C# then you should first read this C# Tutorial.
- Similarly, you should also have some basic knowledge of Html, CSS, Javascript, Jquery, XML etc. These are all simple languages so you must first their basic tutorials as well.
Setting up Environment for ASP.NET MVC
- We can use any Integrated Development Environment (IDE) for ASP.NET MVC i.e. visual studio, visual code, sublime, atom etc.
- We will also need to install .NET Core SDK, which is a software development kit.
- Microsoft Visual Studio Community Edition is free to use and you can download it from its official website.
- Once you downloaded a simple setup of around 1.5MB, you need to run that .exe file and it will start downloading the setup files, as shown in figure on right side.
- Once it's downloaded all the required files to start the setup, a new window will open up as shown in below figure:
- That's called workload area of Visual Studio, here you need to select which tools, you want to install on your machine.
- I am going to select these 3 options from this list:
- As of this tutorial, the latest version available is Microsoft Visual Studio Community Edition 2019 and .NET Framework version is 4.7.2 (latest stable version), which will be automatically installed along with visual studio.
- If you are using any third party editor i.e. sublime, then you need to download the .NET Core SDK and install it on your machine.
- .NET Core SDK is available for Windows, Linux, macOS and Docker.
So, that was for today. I hope you have enjoyed today's tutorial and are ready to get your hands dirty with ASP.NET Core. In our next tutorial, we will create our first project in ASP.NET Core and will write some code. Till then take care & have fun !!!
Businesses Should Get the Help of a Ruby on Rails (RoR) Development Company
Hello friends, I hope you all are doing great. In today's tutorial, we are gonna have a look at Why Businesses Should Get the Help of a Ruby on Rails (RoR) Development Company. But before going into the details, let's first have a look at what is Ruby on Rails.
Ruby On Rails is a server side web development framework, designed in Ruby Programming language and is distributed under MIT License. It was first emerged in 2000 and brought a revolution in web application development.
Basics of Ruby On Rails
- Ruby on Rails was first introduced in 2000, it was actually extracted by David Heinemeier Hansson from his own work named as Basecamp.
- It was properly launched in December 13, 2005 as an open source web development framework, and got immensely popular in web developers because of its flexibility & friendliness.
- Today, many successful online businesses are using this framework and are flourishing, few of them are:
- Twitter.
- Netflix.
- Shopify.
- Airbnb.
- Twitch.
- Latest version of Ruby on Rails was released on August 16th, 2019, named as Ruby on Rails 6.0.
Why use Ruby on Rails ?
- According to a survey in 2017, conducted by Stack Overflow, Ruby on Rails is in top 10 most popular programming languages.
- There are many factors involved, in making Ruby that popular, let's have a look at them one by one:
Time Efficient
- If you ask from any ror development company, then they will agree on the fact that Ruby reduces the development time by 25% to 40%.
- That's because, it has a wide developers community and a lot of pre-built plugins, which can easily be utilized & hence saves a lot of time.
Framework Consistency
- Ruby on Rails Framework is too consistent in its operation and emphasizes on Convention over Configuration.
- Because of its consistency, it's quite easy for the developers to understand pre-designed applications and then make amendments according to their requirements.
App Customization
- Ruby on Rails got extensive online developers community and they are keep on launching new features in it.
- So, if you are planning on adding some new feature in your Ruby App, then you should first make an online search, as I am sure it has already been designed for you.
Ruby on Rails (RoR) Development Company
- Now the question arises that if Ruby on Rails is that simple & efficient, then Why we need to Get Help of a Ruby on Rails (RoR) Development Company.
- If you already have your website setup on some other platform, such as Wordpress, Laravel etc. then it's quite difficult & time consuming to completely transfer it to Ruby platform.
- So, it's always a best practice to first hire some professional ror development company, which could provide you the complete App and after that you can hire professionals for tweaking purposes.
- Hiring a professional, not only saves time but also reduces the security glitches/loopholes.
- If you work on it on your own, then there's a massive chance that you left some loopholes in your application for the hackers and they exploit your web App using those loopholes.
- So, because of security & time issues, it's always best to hire professionals, get your App completed and flourish your business.
So, that was all for today. If you have any questions, please ask in comments and we will try to resolve them as soon as possible. Till next tutorial, take care & have fun !!!
Industries impacted by Virtual Reality
Hello friends, I hope you all are doing great. In today's tutorial, we will have a look at Industries impacted by Virtual Reality. Since its introduction to the mainstream a few years ago, VR technology has been raising excitement in anyone interested in fresh ideas. This concept might not be developing on the level we expected from the beginning. However, the potential of Virtual Reality shows great promise for some fantastic things we could be doing in the future, but even now there are many fields and industries where VR is becoming a real game-changer.
Architecture and engineering
There is a lot that VR-based tools can do for engineers, architects, planners, designers, constructors, and so on. It helps them
deliver value and make their work easier and better. Just imagine a project of your own house coming to life in front of your eyes in a way the best computer programs won’t be able to match. VR can greatly improve all the stages of the design cycle like the initial concept, modeling, prototyping, reviewing structural weaknesses and similar, as well as serving as an invaluable training tool.
Entertainment
VR in the gaming industry is
one of the most promising trends for video game development and a significant stream of revenue for this sector. It is believed that the annual worldwide proceeds from VR will reach 28 billion dollars in 2020, with $4.5 B coming from actual VR games. The technology is getting more recognition in other entertainment branches as well. Some music artists use VR gear to provide a more memorable experience from music concerts. It is also used similarly in theaters, museums, galleries, and amusement parks.
Education
The concept of learning has changed a lot because people can acquire knowledge in different ways. Many of them through the sense of sight. Applying solutions coming from Virtual Reality makes sense here, and it can transform learning processes for students and teachers. It allows them to have a fuller, more immersive experience and come into contact with excellent interactive content.
Tourism and marketing
Virtual Reality is a great way to showcase a product to potential customers to make them want it more. No wonder then that marketing was one of the first industries to embrace the new technology.
Travel companies, especially, can find it useful to deliver realistic views of exotic locations, architectural monuments, and exciting places.
Introduction to Enums in C#
Hello friends, I hope you all are having fun. In today's tutorial, we will have a look at detailed
Introduction to Enums in C#. It's our 23rd tutorial in C# series and this C# concept is quite easy one. It's normally used to give better meanings/understanding to your project.
If you haven't studied lectures on
C# Classes &
C# Methods, then do read them first, as we are going to use them today. So, let's get started with Introduction to Enums in C#:
Introduction to Enums in C#
- Enums in C# ( short for Enumerations ) is a value type datatype for constants, created by using keyword enum and can be controlled by the class Enum. ( keyword with small e, while class with capital E )
- We can declare & implement Enums directly in C# Namespace, class or struct and the underlying type of an enum is integer.
- Enums are strongly typed so we can't implicitly convert them into any other Data Type. Although we can use explicit conversion to convert enums into integers etc. ( We studied it in Data Types Conversions and we will also look at it shortly )
- Let's understand this enum concept with an example, suppose we are working on some scheduling project and we need to print names of all days.
- As we know these names are constants, and are also occurring in a sequence, so we can create enums for them, as shown in figure on right side.
- There are 3 ways to create Enums as you can see in the figure.
- In the first enum declaration, I have simply added the data in the enum WeekDays. Although, I haven't added any index but still it got the index starting from 0 and then incremented automatically by 1, thorough out the enum, as its underlying type is integer.
- In the second enum declaration, I have added the index in front of the data, so we can do that as well. Although, there's no difference between first & second implementation, its just second one displays the hidden values.
- In the third enum implementation, I have assigned random values to constants, so we can do that as well. Instead of values in a sequence, we can assign random values to these Constants.
Why use Enums in C# ?
- You must be thinking, why we need to use Enums, we can remember such things and can easily replace them with integer checks.
- Yeah we can do that in simple project but in complex projects and especially in those projects where you don't have a sequence, enums play an important role.
- Let's say you need to use Elements of Periodic Table in your project, there are too many elements, so in such cases, enum comes quite handy, you can place these elements in right order in your enum and then can use them easily though out your project.
How to use Enums in C# ???
- Now let's have a look at How to use Enums in C#, so I am creating a simple code where we will check whether it's holiday or working day using enums.
- As shown in below figure, I have created an Enum named WeekDays and this enum is public so we can use it in other classes.
- Moreover, enums are value type so, we can't instantiate them in other classes.
- You can see in above figure that in Main Function, I have created a new variable CurrentDay of Data Type WeekDays, as enum is a Data Type.
- We can't assign any other value to this variable, we can only assign members of its enum to this variable.
- In the IF Loop, I have used the members of enum in my conditions to verify.
- So, now you can see the code has become more Readable & we can easily maintain it without remembering anything.
- We have studied enum keyword so far, now let's have a look at class Enum:
How to use class Enum in C# ??
- In Visual studio, you will also find Enum class along with enum keyword. (enum keyword starts with small e while class Enum starts with capital E )
- We can use this Enum class to get different properties of our enums i.e. we can get their Constants or can also get their underlying integer values.
- We can also search for any keyword in the Enum, whether it exists or not.
- I have performed all these three operations in the code, shown in below figure:
- So, you can see in above figure that we can get Names & Indexes of our enums using this Enum class.
- I have first used the class name Enum, then dot operator and finally methods from Enum Class.
- We can also change the underlying type of our enum using ( : ) colon operator.
- In the right figure,I have changed the underlying type of my enum from integer to short.
So, that was all about Enums in C#. I hope you understood enums & their importance. In next lecture, we will have look at Attributes in C#. Till then take care & have fun !!! :)
Introduction to Access Modifiers in C#
Hello friends, I hope you all are having fun. In today's tutorial, we will have a look at Introduction to Access Modifiers in C#. It's our 22nd tutorial in C# series and now it's time to have a look at access modifiers, which we have to use a lot in C#.
I hope that you have already studied previous lectures i.e. C# Methods, C# Structs, C# Classes etc. as these access modifiers are used with them. So, let's get started with Introduction to Access Modifiers in C#:
Introduction to Access Modifiers in C#
- Access Modifiers in C# are used to apply restrictions on the accessibility of C# Objects within or outside the project, and are defined in the declaration.
- There are 5 Access Modifiers available in C#, whcih are:
- Private
- Public
- Protected
- Internal
- Protected Internal
- We will have a look at all of them, in detail but before going any further, we need to understand the difference between Types & Type Members.
- All those C# objects, which can contain members in them as called Types i.e. C# Classes, Structs, Interface, Enums etc.
- While the members of these types are called Type Members i.e. C# Fields, C# Properties and C# Methods.
- All the C# Types can only be either Public or Internal i.e. we can't make a class private. ( We will discuss it in detail shortly )
1. Private - Access Modifier in C#
- Private Access Modifier restricts the C# Type Members to be used in the containing class only. ( Containing Class means, the class in which they are created )
- We can't use Private Members in external classes, as shown in the figure on right side.
- I have created a Private variable in a new class and now when I am trying to access this variable in Main function, I am unable to do that.
- In the IntelliSense, there's no property/option to use this private variable.
- Although, we can use this variable Number1 in HelloWorld class quite easily.
2. Public - Access Modifier in C#
- Public Access Modifier removes all restrictions from C# Objects and these objects become available in any assembly or project.
- In order to use Public Objects, we need to follow the proper way i.e. we need to instantiate in order to get the Public Property.
- In the figure, you can see I have created a public variable Number1 in a new class and then I have assigned a value to it in my Main Method.
3. Protected - Access Modifier in C#
- Protected Access Modifier restricts the C# Type Members to use only in containing classes or inherited classes.
- We can't use Protected Members in any independent Class or Struct, it has to be inherited from the Containing Class.
- Here's an example of Protected Access Modifier in action, and you can see that I can assign value to Protected variable Number1 in the inherited class HelloWorld2.
- But the independent class Program can't access this Number1 variable.
4. Internal - Access Modifier in C#
- Internal Access Modifier restricts the C# Objects to be used in the current assembly only.
- In complex projects, we need to add multiple assemblies i.e. different add-ons and plugins etc.
- So, Internal variables can be used in the current assembly / project only, we can't access it in external assemblies.
- We will look at them in detail, in our coming lectures.
5. Protected Internal - Access Modifier in C#
- Protected Internal Modifier allows the C# Type Members to be accessed in the containing assembly as well as in those classes ( of external assemblies ), which are inherited from the containing class.
- When we will be done with these basic concepts in C#, then we will design few complex projects and then you will get better understanding of these access Modifiers.
So, that was all about Access Modifiers. In the coming lecture, we will have a look at Enumerations in C#. Till then take care & have fun !!! :)
Introduction to Delegates in C#
Hello friends, I hope you all are doing great. In today's tutorial, we will have a look at detailed Introduction to Delegates in C#. It's our 21st tutorial in C# series and now we are entering in the complex field. C# concepts, we have studied so far, were quite simple, but now we are slowly moving towards complex topics.
Delegates are not that difficult as normally considered, you just need to understand its basic idea and rest is quite simple. So, let's get started with Introduction to Delegates in C#:
Introduction to Delegates in C#
- Delegates in C#, created by using delegate keyword, are used as a type safe pointer, normally pointing towards C# Methods & Events.
- The signature of the Delegate & the function ( its pointing to ) must be same.
- As Delegate is a reference type Data type, so we can create its new instance.
- If you want to use any Method as a variable, then Delegates are literally the answer. ( We will have a look at it shortly )
- Delegates belong to builtin C# class named System.Delegate.
- Let's have a look at it's syntax:
- You can see in above figure that I have first declared the delegate, outside the class and I have used delegate keyword in its definition.
- Now in the Main function, I have created a new instance of this Delegate and in its constructor, I have pointed out the Method Name, to which I want to assign this delegate.
- After that I have invoked the Method using Delegate, instead of the Method's name itself.
- You need to make sure that signature of this delegate & the function must be same, when I use the word signature then that means return type and parameters.
- My Function & delegate, both have void return type, so if I change return type of any one of them, then compiler will generate an error and that's why we call it type safe.
- Similarly, the number & type of Function Parameters must have to be same for both Delegate & its pointed Method.
- Let's have a look at MultiCast Delegate in C#:
MultiCast Delegate in C#
- We can assign / point a single delegate to multiple Methods / Functions, such delegates are called MultiCast Delegates in C#.
- In the below figure, I have assigned a single delegate to 3 methods and when I invoked the delegate then it has executed all these 3 methods.
- In the above figure, I have used two ways to chain delegates together, in the first way I have used plus sign ( + ), while in second one I have used append sign ( += ).
- You must be wondering why to use these function pointers when we can directly invoke the Method using its own name.
- So, in order to understand the importance of delegates, let's design a simple example:
Example of Delegate in C#
- Let's create simple code, where we create a new class named StudentsData and it will have 3 C# Properties and 1 C# Method.
- You can see this code in below figure and I have placed an if loop in my method which has a Boolean expression in it i.e. score < 40.
- This condition Score < 40 is hard coded in my method, which makes my code quite rigid, whereas its always good practice to add flexibility in your code so that you could reuse it.
- So, now let's create a new method and add a delegate instead of this Boolean expression and as its a Boolean expression, so my delegate also has to be of Boolean return type.
- You can see in above figure that I have created a delegate named StudentsDelegate, which is of Boolean return type.
- After that, I have created a method in Main Function named CheckStatus, which is also of Boolean Type and taking Score as a parameter.
- If you look closely, the signature of this delegate & method CheckStatus are same.
- I have used the delegate to point to this method CheckStatus and have placed our failed condition in it.
- Now this function will return either TRUE or FALSE i.e. it's kind of a Boolean expression.
- Finally, I have added a delegate as a second parameter in FailedStudents Function, and then used this parameter as a condition in IF Loop.
- So, now my class is completely flexible, if I wanna change the condition, then I don't need to change the class, I can change score condition in my Main class.
- Now, you must be thinking, we have done so much coding just to shift a condition from one class to another, we have done it for a purpose.
- So, let's have a look at the below image, where I have used Lambda Expression in C#:
- In C#, we can use lambda expressions, which we will study in coming lectures, but for now you can see in above figure that I have removed the delegate instantiation and have also removed the pointed method.
- Instead I have just placed a Lambda expression and visual studio has created the delegate & method in the background, which we don't need to worry about.
- We just need to understand this lambda expression where we have placed our condition i.e. Score < 40.
- Delegates are the basis of this lambda expression, which is quite handy, it has not only made the class flexible but have also reduced the code to just single line.
So, that was all about Delegates in C# and I hope you have understood their importance. In the coming lecture, we will have a look at Exception Handling in C#. Till then take care & have fun !!! :)
Introduction to Properties in C#
Hello friends, I hope you all are doing great. In today's tutorial, we will have a look at Properties in C#. It's our 20th tutorial in C# Series and a quite important one as we are gonna use properties a lot in our coming lectures.
If you haven't studied
C# Methods &
C# Classes then I would suggest you to read them first before starting today's tutorial, as we are gonna use methods today. So, let's get started with Properties in C#:
Introduction to Properties in C#
- Today I am not gonna start with the definition as I did in previous tutorial, instead we will first understand the concept and then will define it.
- So, let's create a new C# Class named StudentsClass shown in figure on right side.
- this class has 3 fields in it, first one is int and other two are string and all these three fields are public.
- Moreover, it has a C# Method in it, which is also public and printing the Full Name.
- In our Main Function, I have created new instance of this Class and then invoked the Method.
- So what if, we want to add some restrictions on these fields i.e. we can't have a negative roll number & the name fields can't be null.
- We don't want garbage values as well, to pass on to our project so its always wise to use private fields instead of public and place some controls on the coming values.
- We can do this by using C# Methods, as I did in this right image. ( you may need to click the image to look at the zoomed version)
- So, here I have created two C# Methods, which are receiving values from external classes and then I have placed the check on the coming value and if it satisfies the condition then I have passed it on to my field or variable.
- Now the field is also private, instead of public.
- But you must be wondering that its a lot of work to add two functions for every field, so here comes the properties in C#.
- In the below figure, I have created a C# Property named RollNo for the private field _RollNo and then I have used accessor in C#, which are:
- set: To save the value of Property.
- get: To read the value of Property.
- In the above figure, you can see that I have created a property named RollNo and in that property, I have used set accessor & get accessor.
- Moreover, in the Main function, now we are treating RollNo as a Property and using dot operator to set or get the value.
- Instead of using the setRollNo function, we are simply using SC.Roll = 20; to set the Roll no. and compiler will automatically move to set accessor of this property and the value we will assign it i.e. 21 it will be used by the value keyword.
- You can see in set accessor that, I have used value keyword and this keyword will have the value coming from invoking request i.e. 21 in our case.
- Similarly, when we want to read the Roll No, we are using SC.RollNo and the compiler will automatically know that it need to move into RollNo Property and then check the get accessor.
- So, we can say that our property RollNo is a read / write property, if it just has the get accessor then it will be read only property.
Auto Implemented Properties in C#
- In the above case, we have seen tha we have to place some logic in our set & get accessor, but in most of the cases, we don't need to add any additional logic in our accessors.
- For example, I am creating fields for City, Phone Number, Email Address etc. then in such cases, we can make use of C# Auto-Implemented Properties which were introduced in C# 3.0.
- In the below figure, I have created Properties with get & set accessors:
- You can see that now I have created 3 new C# Properties and haven't even created any field for them, that's created & implemented automatically by C#.
- So, when I create a C# Property then its auto-Implemented its private field, which we can control by using set & get accessors, if we want to.
- So, our whole field vanished & protected and our new Property code is also lies in just one line, so kind of brilliant idea, introduced in C# 3.0.
Object Initializer Syntax
- Now let's have a look at a new Object Initializer Syntax, which was also introduced in C# 3.0 and I think it's best among all.
- Let's instantiate our StudentsClass using this new Object Initializer Syntax, as shown in below figure:
- You can see in above figure that it's now quite simple to assign & get data to & from Class Properties.
- I am updating all Members of C# Class in just single line, although you can add single property per line as well, but I like it that way, simple and clear.
So, that was all about Properties in C# and I hope now you can set & get them quite easily. In our coming tutorial, we will have a look at Delegates in C#. Till then take care & have fun !!! :)
Introduction to Abstract Classes in C#
Hello friends, I hope you all are doing great. In today's tutorial, we will have a look at detailed Introduction to Abstract Classes in C#. It's our 19th tutorial in C# series. Today, we are gonna discuss another new concept in C# and I would recommend you to follow these tutorials at least 3 to 4 times, so that these concepts find the right place in your brain and stick there.
C# Abstract Classes are quite similar to C# Interface in many respects, so if you have studied previous tutorial in C# Series, then do read it first. So, let's get started with Introduction to Abstract Classes in C#:
Introduction to Abstract Classes in C#
- Abstract Classes in C# are created by using Abstract Keyword, and are used to create abstract members, which have their declaration but no implementation (as in C# Interfaces) but unlike Interfaces, Abstract Classes can also have complete methods, properties etc.
- Abstract Methods in C# are also created by using Abstract Keyword, these methods are only declared in Abstract classes and are then implemented in one of its derived classes & the implementation of the Method must have override Keyword in it.
- You must be finding these definitions a bit difficult but no need to worry as we will discuss them one by one in detail.
- The Abstract Modifier / Keyword is used to indicate an incomplete implementation that's why we can't instantiate such objects. We can use it with classes, methods, properties, events and Indexers.
- Moreover, the class inherited from Abstract Class must have the complete implementation of all the members of Abstract Class, along with override keyword in their declaration. (We will discuss it shortly)
- It's not compulsory for the Abstract Class to must have some Abstract members, instead we can add only normal members as well.
- Let's have a look at the syntax of Abstract Class having 1 Abstract Method & 1 normal Method, shown in below figure:
- In the above figure, we have created a public class with abstract keyword/modifier in it named StudentsAbstract, so it's an abstract class.
- As StudentsAbstract is an Abstract Class, so we can create both Abstract (Incomplete) members and normal (complete) members in it.
- So, I have created two methods, printMsg() is an abstract Method as it has Abstract Keyword in its declaration, that's why we haven't placed the implementation of this method.
- While printMsg2() is a normal method so it's fully implemented in Abstract Class.
- These Abstract Classes are normally used as a Parent Class in Inheritance and it's kind of their main role. So, let's have a look at Inheritance in Abstract Classes:
Inheritance in C# Abstract Classes
- As I mentioned earlier, Inheritance is the main role of C# Abstract Classes and they normally play the role of Parent Class and we inherit different classes & structs from them.
- We can't use the sealed keyword with abstract class, as then we can't inherit any other class. ( We have studied sealed keyword in C# Classes Lecture )
- Abstract Class can inherit from other Abstract Classes & C# Interfaces. ( Interfaces can't inherit from Abstract Classes )
- The class inherited from Abstract Class, must have the implementation of all abstract members of its Parent Class, otherwise, we will get a compiler error.
- In the above figure, we can see that I have added a new class StudentsClass derived from our Abstract Class StudentsAbstract.
- Now, this new derived class must have the implementation of its Parent's Abstract Members, as I did for printMsg() Method in above figure.
- Moreover, we need to use override keyword in our derived class method's declaration.
- So, now we have created an Abstract Class and have also added an Abstract Method in it, after that we have derived a new class and provided implementation of our Abstract Method.
- Let's now invoke this Abstract Method, declared in Abstract Class & Implemented in Derived Class, shown in below figure:
- In the Main function, I have simply created a reference variable of Child Class and then invoked both of these methods.
- You must have noticed that Abstract Classes are quite similar to Interfaces but they have few differences as well, let's have a quick look at them:
Abstract Classes Vs. Interfaces
- Abstract Classes & Interfaces have a lot in common as both are used for creating incomplete members i.e. declaration only, yet they have some differences as well.
- We can't create implementation of any member in Interfaces but that's not the case in Abstract Classes, we have the option to create Full members in Abstract Classes.
- Members in Interfaces can't use access modifier and they are all public by default, but in Abstract Classes we can provide access modifier and can make them private etc.
- We can't declare C# Fields in Interfaces but that's possible in Abstract Classes.
So, that was all about C# Abstract Classes and I hope you can now differentiate them from Interfaces. In the next lecture, we will have a look at Introduction to Delegates in C#. Till then take care & have fun !!! :)
Introduction to Interface in C#
Hello friends, I hope you all are doing great. In today's tutorial, we will discuss another important concept named Interface in C#. It's our 18th tutorial in C# series. It's one of my favorite concepts in C# as its come quite handy in complex projects.
Interfaces are quite similar to
C# Classes &
C# Structs in design so if you haven't studied those lectures then do read them first. So, let's get started with the Introduction to Interface in C#:
Introduction to Interface in C#
- Interface in C# is created using Interface Keyword and is used for the declaration of Methods, Properties, Events etc. but we can't add any implementation in it. ( we can't declare Fields in Interface )
- You can think of Interface as a signature, you look at the interface and you will know all Methods, Properties etc. used in your project.
- Interface members don't use access modifier in their definitions, by default they all are public.
- It's a naming convention to use capital ( I ) as the first character of interface name, so that you know, just by looking at the name, that it's an Interface.
- Let's have a look at the syntax of Interface , before exploring it any further:
- In the above figure, I have created an interface named IStudentsInterface and it contains declaration of two C# Methods.
- We can't implement these methods in Interface, as it will generate a compiler error.
- Now you must be wondering, what's the benefit of using Interfaces, when we can't add the Implementation, and here comes Inheritance:
Interface Inheritance in C#
- Interfaces are normally used as Parent Node in Inheritance, while C# Classes and C# Structs are inherited from Interfaces.
- We can inherit a class or struct from multiple Inheritances, separated by commas. (We can't inherit a class from multiple classes)
- When we inherit a C# Class or Struct from an Interface, then it must provide the implementation for all the Members of that Interface.
- If we miss implementation of any single member, then compiler will generate an error.
- We can't create a new instance of Interface as we can do for Classes & Structs, although we can create an Interface Reference variable that will point to its derived class object.
- So, let's inherit a C# Class from our interface IStudentsInterface and see How it works:
- In the above figure, I have created an Interface named IStudentsInterface and it has declaration of two Methods i.e. PrintMsg() & StudentsNames().
- After that, I have inherited a class named StudentsClass from this interface IStudentsInterface .
- This class must have the implementation of those two methods we declared in our Interface IStudentsInterface.
- So, I have just created two simple methods with Console ouput, so we remove any one of them, the compiler will generate an error.
- Let's inherit our class from multiple interfaces, shown in below figure:
- In the above figure, I have created two C# Interfaces having 1 Method each.
- Moreover, the class is inherited from both of these interfaces, separated by commas, so it must have the implementation of both of these methods.
- Similarly, if an interface is inherited from another interface and you are inheriting your class from Child Interface, then still you must have the implementation of all Members of these two Interfaces in your class.
- Let's have a look at this multiple level inheritance of Interfaces:
- You can see in above figure, that IStudentInterface2 is inherited from IStudentInterface and our class is inherited from IStudentInterface2. (Like a chain)
- So, in this case as well, our class must have the implementation of both these methods, otherwise we will get compiler error.
- This type of Interface Members' Implementation in C# Classes or Structs is called Implicit Interfaces Implementation.
- So, now let's have a look at Explicit Interfaces Implementation:
Explicit Interfaces Implementation
- In Explicit Interfaces Implementation, we have to use the Interface Name along with dot operator and then name of the Method in its implementation.
- An example of Explicit Interfaces Implementation is shown in below figure:
- As you can see in above figure that our class is inherited from two interfaces.
- Moreover, in this class I have implemented C# Methods explicitly i.e. now compiler won't need to find which method belongs to which interface.
- Instead the interface name is present in Methods' definition along with dot operator ( . ).
- You must have noticed that now we have removed the access modifier and its public by default as of Interface members.
- When Interface members are implemented explicitly, then we can't access them using reference variable, instead we need to use cast operator:
( ( IStudentsInterface) SC ) . PrintMsg();
- So, we need to use above method in order to invoke the Explicitly Implemented Interface Method.
- There's another way as well, which I have told you at the very top of today's tutorial i.e. we can't create a new instance of Interface yet we can create its reference variable, as shown in below figure:
- You can see in above figure that in Main function, I have created Interface variables both pointing to its derived class object.
- Now, as they are interface variables so we can use them to invoke respective explicitly implemented method.
So, that was all about Interfaces in C#. I hope you have completely understood its operation and working. In next tutorial, we will have a look at Abstract Classes in C#. Till then take care & have fun !!! :)