برنامه نویسی Consol Application در را با نوشتن پروژه آموزش می دهیم :
میخواهیم پروژه ای بنویسیم که 2 عدد از ورودی دریافت کند و عدد بزرگتر را چاپ نماید :
static void Main(string[] args)
{
Console.WriteLine("plz enter the firest num:");
int firstNum = int.Parse(Console.ReadLine());
Console.WriteLine("plz enter the second num:");
int secondNum = int.Parse(Console.ReadLine());
int bigNum = 0;
if (firstNum > secondNum)
{
bigNum = firstNum;
Console.Write("firstNum are the big number : " );
Console.WriteLine(bigNum);
}
else if (secondNum > firstNum)
{
bigNum = secondNum;
Console.Write("socondNum are the big number");
Console.WriteLine(bigNum);
}
else
Console.WriteLine("The Numbers Are Equal");
Console.ReadLine();
}
این برنامه برای اعداد ورودی عددی به درستی کار میکند. اما اگر ورودی را از نوع کاراکتر حرفی وارد نماییم، با خطای ورود اطلاعات مواجه میشویم. بنابراین باید پس از دریافت اطلاعات، بررسی شود که ایا مقدار ورودی را به صورت رشته ای وارد نموده و یا ازنوع عددی. با استفاده از تابع int.TryParseمی تونیم بررسی کنیم که آیا مقدار ورودی را صحیح وارد کرده است و یا خیر. خروجی این تابع از نوع boolian می باشد.
طریقه کاربرد این تابع به صورت زیر می باشد:
if (!int.TryParse(Console.ReadLine(), out firstNum))
این تابع به این صورت عمل می کند که پس از دریافت ورودی از طریقConsole.ReadLine()، مقدار وارد شده را داخل متغییر Out می ریزد (یعنی firstNum) سپس توسط تابع بررسی میکند که آیا مقدار واردشده از ورودی پس از اعمال تبدیل نوع رشته ای به نوع عددی ، مقدار وارد شده صحیح می باشد و یا خیر .
کارکتر ! به معنای not می باشد. که اگر پس از تبدیلات ، مقدار تابع TryParse،False بود ، آن را به true تبدیل کند تا شرط دستور If صحیح شود.
static void Main(string[] args)
{
Console.WriteLine("plz enter the firest num:");
int firstNum = 0;
if (!int.TryParse(Console.ReadLine(), out firstNum))
{
Console.WriteLine("plz just enter numbers");
Console.ReadLine();
return;
}
Console.WriteLine("plz enter the second num:");
int secondNum = 0;
if (!int.TryParse(Console.ReadLine(), out secondNum))
{
Console.WriteLine("plz just enter numbers");
Console.ReadLine();
return;
}
int bigNum = 0;
if (firstNum > secondNum)
{
bigNum = firstNum;
Console.WriteLine("firstNum is the big number");
}
else if (secondNum > firstNum)
{
bigNum = secondNum;
Console.WriteLine("socondNum is the big number");
}
else
Console.WriteLine("The Numbers Are Equal");
Console.ReadLine();
}
}
همانطور که قبلا هم گفته ایم ، یکی از ویژگی های .NET امکان استفاده از کلاس و فضای Name Space می باشد. حال می خواهیم برای خوانایی برنامه و برای کدهای تکراری از این فضا استفاده نماییم.
بر روی نام پروژه خود در پنجره Solution Explorer و با راست کلیک کردن، گزینه Add Class را انتخاب نمایید.
برای این که بتوانیم توابع این Name Space در همه پروژه های Solution قابل استفاده باشد، به تابع سطح دسترسی Public میدهیم و برای این که از نام توابع کلاس ها بدون بکار بردن نام Name Space استفاده کنیم از Static استفاده میکنیم.
کلاس این Solution را به صورت زیر می نویسیم :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
public static class String_Class
{
//extention method: framework اضافه کردن متد به متدهای
public static int ToInt32(this string s)
{
int num = 0;
int.TryParse(s, out num);
return num;
}
public static bool IsInt32(this string s)
{
int num = 0;
return int.TryParse(s, out num);
}
}
}
و کد برنامه را به صورت زیر وارد مینماییم :
static void Main(string[] args)
{
Console.WriteLine("plz enter the firest num:");
string firstNum = Console.ReadLine();
Console.WriteLine("plz enter the second num:");
string secondNum = Console.ReadLine();
if (!firstNum.IsInt32() || !secondNum.IsInt32())
{
Console.WriteLine("error");
Console.ReadLine();
return;
}
int first = firstNum.ToInt32();
int second = secondNum.ToInt32();
Console.WriteLine(Math.Max(first, second));
Console.ReadLine();
}
}