C# is an Object-oriented programming language. C# comes with simplicity, expressiveness and great performance to meet the programmer productivity.
Introduction
So far, we have seen
virtual, const and event modifiers in
C#. Now let's see
extern
,
in
and
async
in this chapter.
Objective
The main objective of this article is to learn
extern
,
async
and
in
modifiers in
C# programming.
extern
extern simply means external. This is a C#
keyword (modifier) which is used to declare an external method (
i.e. external implemented method).
It is mostly used in interop services with DLLImport attribute to call into the unmanaged code.
Take a look at the below example which explains it easily,
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices; // Interop services namespace
using System.Text;
using System.Threading.Tasks;
public delegate void Handler();
namespace Man
{
class Program
{
class External
{
[DllImport("User32.dll", CharSet = CharSet.Unicode)]
public static extern int MessageBox(IntPtr i, string s1, string s2, int type);
static int Main()
{
string Name;
Console.Write("Please type your message: ");
Name = Console.ReadLine();
return MessageBox((IntPtr)0, Name, "Message Box", 0);
}
}
}
}
In the above code, we are using an external method called
MessageBox from
User32.dll library to get a string from the user and display in a message box.
We have to import System.Runtime.InteropServices to perform interop service.
If you run this code, you will get output something like,
After typing a message, press 'Enter
' keyword to display it in the message box.
MessageBox method has seven types of boxes which are changeable like below.
Replace below line in the above code,
return MessageBox((IntPtr)0, Name, "Message Box", 1);
This will gives you a message box like below,
Now try changing it like below,
return MessageBox((IntPtr)0, Name, "Message Box", 2);
This will displays a message box like,
And if you give type as 3 like below,
return MessageBox((IntPtr)0, Name, "Message Box", 3);
It will shows message box like,
For type = 4 such as,
return MessageBox((IntPtr)0, Name, "Message Box", 4);
It will looks like,
And for type = 5 i.e,
return MessageBox((IntPtr)0, Name, "Message Box", 5);
The box will looks like,
Last one is type 6 i.e,
return MessageBox((IntPtr)0, Name, "Message Box", 6);
This will displays a message box something like,
These are the different types of message boxes that present in the MessageBox method of User32.dll library.
in
in is a generic modifier and one of the reserved keywords of C# language which means that no
variable identifier can ever be
in.
It is mostly used with
foreach loop and with some query expressions such as
LINQ.
Let's have an example code of using '
in
'
keyword,
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
public delegate void Handler();
namespace Man
{
class Program
{
static void Main()
{
string[] Friends = new string[3];
Friends[0] = "Ram";
Friends[1] = "Raj";
Friends[2] = "Ravi";
foreach (string name in Friends)
{
Console.WriteLine(name); // prints all the names
}
foreach (char c in "Hai")
{
Console.WriteLine(c); // prints H, a, i
}
}
}
}
In the above code, we have two
foreach loops with two '
in
' modifiers. Here, '
in
' plays key role to get enter into that type and perform an action.
The above code will prints the following lines in your console,
async
async means asynchronous. It is used to specify any asynchronous methods.
syntax,
public async void Test() // Asynchronous method
{
..........;
}
Both
async and
await keywords are mostly used for asynchronous and non-blocking methods.
Conclusion
In this article, we have seen
extern
,
in
and
async
modifiers in
C# programming. Hope you understand.
Thanks for reading.
Regards,
Krishna.