تبليغاتX
جادوي سي شارپ
با سلام
این اولین پست من در وبلاگ جدید هست. امیدوارم بتونم در کنار دوستان خوبم پستهای خوبی رو ارسال کنم.
معمولا پستهای من در خصوص اصول و مفاهیم اولیه زبان سی شارپ خواهد بود و در کنار این موارد پستهایی در خصوص صفحات وب در سی شارپ نیز ارسال خواهم کرد.

:داده ها در سی شارپ:

انواع داده ها:

bool: true یا false
byte: داده 8 بیتی بدون علامت
:short عدد صحیح 16 بیتی
int: عدد صحیح 32 بیتی
long: عدد صحیح 64 بیتی
float: عدد اعشاری 32 بیتی
double: عدد اعشاری 64 بیتی
Char: کاراکتر 16 بیتی
string: کاراکترهای 16 بیتی

شما می توانید یک داده سطح بالاتر را با داده سطح پایین تر مقداردهی کنید. (در اینجا منظور من از سطح مجموعه اعداد و حافظه متغیر می باشد)

float y = 7.0f; //y is of type float
int j;              //j is of type int
y = j;             //convert int to float

البته امکان مقداردهی یک داده سطح پایین تر با داده سطح بالاتر نیز وجود دارد. به این عمل اصطلاحا Casting گفته می شود.

1)
j = (int) y; //convert float to integer
2)
float x = 1.0E45;
int k = (int) x;
3)
int k;
bool gtnum;
gtnum = (k > 6); //true if k is greater than 6

در نظر داشته باشید که ممکن است عمل casting با خطا مواجه شود.
همچنین امکان مقداردهی متغیرهای Boolean با اعداد، همانند c یا ++c وجود ندارد. و تبدیل متغیر از نوع Boolean به دیگر متغیرها نیز امکانپذیر نیست.

تبدیل انواع اعداد و رشته ها به یکدیگر:
با استفاده از متد Convert می توانید اعداد را به رشته و رشته به عدد تبدیل نمایید. البته متد Convert تبدیلات دیگری را نیز انجام می دهد که پس از تایپ دات بعد از متد Convert  می تونید همه آنها را ببینید.

string s = Convert.ToString(x);
float y = Convert.ToSingle(s);
float x = 12.341514325f;
string s = x.ToString("###.###"); //gives 12.342

تعیین نوع و مقدار برای متغیر در زمان تعریف:

float loan = 1.23f;     //float
long pig = 45L;         //long
int color = 0x12345;    //hexadecimal

در سی شارپ سه مقدار ثابت از قبل تعریف شده وجود دارد که عبارتند از: true, false, null
برای قرار دادن کارکترهای خاص غیر رشته ای (عموما کارکترهای کنترلی) از رشته کاراکترهای از پیش تعریف شده استفاده می شود:

‘\n’ newline (line feed)
‘\r’ carriage return
‘\t’ tab character
‘\b’ backspace
‘\f’ form feed
‘\0’ null character
‘\”’ double quote
‘\’’ single quote
‘\\’ backslash

نامگذاری متغیر:
در نامگذاری متغیرهای دقت کنید که حروف کوچک با حروف بزرگ متفاوت هستند در نتیجه سه کلمه زیر سه متغیر مختلف را تعریف می کنند:

temperature
Temperature
TEMPERATURE


یکی از قابلیتهای سی شارپ در مقداردهی متغیرها استفاده از چند عملگر مساوی است:

i = j = k = 0;

و در آخر، هر متغیری قبل از استفاده حتما باید تعریف شده باشد. شما می توانید تعریف متغیر را در هر قسمتی از کد خودتون قرار بدید.


پی نوشت:
برای تبدیل متغیرهای عددی به رشته از متد ToString استفاده مي شود.
براي تبدل رشته به عدد همانطور كه در متن اومد مي تونيد از متد Convert استفاده كنيد

+ نوشته شده در  جمعه بیست و ششم آبان 1385ساعت 13:0  توسط کنستانتین  | 

پست این هفته به یکی از امکانات فوق العاده در .NET Framework 2.0 اختصاص داره. Generic Class

 

وقتی که .NET Framework 1.0 اومد و با توجه به اینکه مایکروسافت قبلا امکان استفاده از Generic Class ها رو توی MFC قرار داده بود همه انتظار داشتن که توی دات نت هم باشه ولی نبود. توی .NET Framework 1.1 هم خبری نبود. اما با اومدن .NET Framework 2.0 انتظار به سر اومد و بالاخره Generic Class ها رو دیدیم.

 

به زبان ساده کلاسهای Generic کلاسهایی هستند که نوع داده آنها بصورت پارامتریک تعریف می شود. نحوه تعریف یک کلاس Generic اینجوریه:

Public Class GClass

{

}

 

مثال زیر رو ببینید:

Public Class GClass

{

 Public T Field;

}

 

در زمان تعریف شی از این کلاس به این شکل عمل می کنیم:

GClass obj=new GClass();

obj.Field=5;

 

استفاده از کلاسهای Generic باعث میشه که بتونیم کلاسهایی با کاربری بالا بنویسیم. کلاسهای Generic هم باعث بالا رفتن قابلیت استفاده مجدد کلاس میشه و هم اصطلاحا میشه باهاش کلاسهای Type Safe نوشت. مثلا تصور کنید که توی یه برنامه از ArrayList استفاده کردید. هر عضو ArrayList در حقیقت یه شی از نوع Object است و این یعنی هر نوع داده ای رو میشه داخل اون قرار داد حالا تصور کنید که یه ArrayList دارید که فقط می خواید اعداد int توی اون قرار بدید و در زمان خوندن اطلاعات داخل اون، اونا رو به int ، Cast می کنید. ولی به هر دلیل اگه اعدادی به غیر از int داخل اون قرار بدید ذخیره میشه ولی در زمان خوندن اطلاعات به Error برخورد می کنید. این نوع ساختمان داده ها Type Safe محسوب نمیشن. یه راه جلوگیری از همچین اشتباهاتی پیاده سازی این نوع ساختمان داده ها با استفاده از کلاسهای Generic است. چون در زمان تعریف شی از نوع کلاس Generic، نوع داده اون رو مشخص می کنید پس شی تولید شده Type Safe محسوب میشه.

جالب اینکه اضافه کردن امکان Generic Class به دات نت باعث شده تا مایکروسافت مجبور بشه امکانات دیگه ای هم به اون اضافه کنه. این مبحث خیلی گستردس و اگه فرصت شد در آینده بیشتر ازش صحبت می کنیم

+ نوشته شده در  شنبه بیستم آبان 1385ساعت 21:10  توسط ققنوس  | 

خوب چون این اولین پسته گفتم از یه چیز خیلی کاربردی که معمولا برنامه نویسا مخصوصا از نوع فارسی زبانش همیشه دنبال اون هستن شروع کنم. از تغییر Keyboard. کاری که قبلا با استفاده از تابع API به نام ActivateKeyboardLayout انجام می دادیم.

 

خوب دست به کار میشیم و یه پروژه از نوع Windows Form می سازیم. فقط یه چیزی بگم اونم اینه که تو کدهامون سعی می کنیم اسامی کلاسها و ... را بطور کامل بنویسیم.

 

Property های فرم را به شکل زیر تغییر بدید:

 

Name -> frmMain

FormBorderStyle -> FixedSingle

MinimizeBox -> False

MaximizeBox -> False

StartupPosition -> CenterScreen

Text -> Change Keyboard Layout

 

حالا یه ListBox روی فرم بذارید و Property های اون رو به شکل زیر تغییر بدید:

 

Name -> lstLanguages

 

 

خوب یه Button هم برای خروج روی فرم قرار بدید و Property های اونم تغییر بدید:

 

Name -> btnExit

Text -> E&xit

 

خوب حالا باید دست به آچار بشیم:

کد زیر را برای Event Handler (گرداننده رویداد) btnExit_Click بنویسید:

 

System.Windows.Forms.Application.Exit();

 

حالا کد زیر را برای frmMain_Load بنویسید:

 

foreach(InputLanguage Language in InputLanguage.InstalledInputLanguages)

 lstLanguages.Items.Add(Language.Culture.EnglishName);

 

InstalledInputLanguage یه Property از کلاس InputLangue است که در حقیقت یه Collection است و زبانهای نصب شده رو تو خودش داره.

 

نکته:

InputLanguage ->  System.Windows.Forms.InputLanguage

 

خوب حالا اگه برنامه را اجرا کنید، لیست زبانهایی که روی سیستمتون نصبه در ListBox نمایش داده میشه.

حالا اگه بخوایم زبان فعال رو عوض کنیم باید کد زیر را اضافه کنیم. سناریوی ما به این شکله که وقتی روی یکی از زبانها توی ListBox دبل کلیک می کنیم زبان انتخاب شده عوض میشه.

 

private void lstLanguages_DoubleClick(object sender, EventArgs e)

{

string myLanguage = "";

if (lstLanguages.SelectedItem != null)

{

myLanguage = lstLanguages.SelectedItem.ToString();

foreach (InputLanguage Language in

 InputLanguage.InstalledInputLanguages)

if (Language.Culture.EnglishName == myLanguage)

InputLanguage.CurrentInputLanguage = Language;

}

}

 

با استفاده از یه حلقه foreach نام تک تک زبانهای نصب شده رو با نام زبان انتخاب شده مقایسه می کنیم اگه یکی بود همون رو به CurrentInputLanguage ست می کنیم. CurrentInputLanguage یه Property از کلاس InputLanguage است که زبان انتخاب شده جاری را تو خودش ذخیره کرده.

 

خوب منتظر نظرات شما هستیم.

 

 

 

+ نوشته شده در  پنجشنبه یازدهم آبان 1385ساعت 20:5  توسط ققنوس  |