PDA

View Full Version : معادل توابع در C#



aligh662000
دوشنبه 23 بهمن 1385, 14:28 عصر
دوستانیکه مثل من با یک زبان برنامه نویسی دیگه سالها کار کردن و تازه یه دنیای .net پیوستن احتمالا همین اشکالات رو دارن!
من برای شروع میخواستم بدون معادل این توابع VB در C# چی میشه!

Len(Txt) بدست آوردن طول یک استرینگ
mid(Txt, i, 1)

Format(Asc(t), "0000") البته آخری را تقریبآ میدونم!
تشکر از راهنمایی هاتون!

omid_Ahmadi
دوشنبه 23 بهمن 1385, 14:41 عصر
این توابع و توابع مشابه جزئی از کلاس String هستند که با تعریف یک متغیر از این نوع می تونید به اونها دسترسی داشته باشید.

aligh662000
دوشنبه 23 بهمن 1385, 14:47 عصر
مرسی من برای len , mid مشکلم حل شد
اگر متغیر text رو از نوع string ببینیم
میشه!
j=text.Length;
tx= text.Substring (i,1);
اما تابع آخری که نوشتم هنوز برام گنگ هستش!

omid_Ahmadi
دوشنبه 23 بهمن 1385, 17:13 عصر
خود متد ToString در بعضی حالتها فرمت متنی که باید برگشته بشه رو به عنوان پارامتر ورودی دریافت می کنه، اما من نمی دونم دقیقا تابع آخر چی کار می کنه که بگم برای اون باید از چه معادلی در .NET استفاده کنی. اما به هر حال می تونی راجه به Format کردن یک متغیر در .NET توی MSDN سرچ کنی، نتایج خوبی رو بدست می آری

aligh662000
شنبه 28 بهمن 1385, 12:17 عصر
کار تابع آخر تویه VB اینه که
کد اسکی حروف رو میگیره و با فرمت مشخص ذخیره میکنه!
فرمت هم به صورت ۴ تا عدد هست
مثالآ اگر کد اسکی ۱۳ باشه به صورت 0013 در میاره!!!
حالا بر گردوندن کد اسکی و به این فرمت نوشتنش تویه #C کمی برای من مشکله!

aligh662000
شنبه 28 بهمن 1385, 14:14 عصر
معادل متغیر های global در #C چی میشه!؟
مثلآ وقتی میخوایم یک متغیر را با مقدارش بین دوتا فرم جابه جا کنیم
یا یک تابع رو یک بار صدا کنیم در تمام برنامه و تمام فرم ها کار کنه باید چی کار بکنیم؟!
تویه VB اینها را Public میگرفتیم و تو ماژول مینوشتیم
من تویه #C یه کلاس پابلیک و استاتیک تعریف کردم اما متاسفاهنه درست نیست!

PC2st
شنبه 28 بهمن 1385, 17:06 عصر
تا اونجائی که یادم مونده (دقیقا مطمئن نیستم)، برای گرفتن کد Unicode یک کاراکتر توی سی‌شارپ باید داده‌ی کاراکتری رو به صورت هگزادسیمال تبدیل کرد. مثلا یک برنامه Console ایجاد کرده و کدهای زیر رو توی Main بنویسید (باعث میشه کد یونیکد کاراکتر a نمایش داده بشه):


char ch = 'a';
Console.WriteLine("{0:X}", (int)ch);
Console.ReadLine();


برای صدا زدن یک تابع که توی تمام برنامه‌ها و فرمها کار کنه، مثل VB اون رو بصورت public (یا internal) توی program.cs (یا ...) تعریف میکنیم. البته باز هم بستگی داره که این تابع چیکار انجام میده!

توی سی‌شارپ میشه یک کلاس رو بصورت پابلیک و استاتیک تعریف کرد مثلا:
public static class myclass

نمیدونم معادل global تو سی‌شارپ چی‌میشه!؟ (شاید همون پابلیک باشه)

aligh662000
دوشنبه 30 بهمن 1385, 10:00 صبح
توی سی‌شارپ میشه یک کلاس رو بصورت پابلیک و استاتیک تعریف کرد مثلا:
public static class myclass



تشکر میکنم از جوابتون البته من هنوز کد ها رو چک نکردم ببینم همون جوابی که من میخوام رو میده یا نه!
اما در مورد متغییر ها global کافیه اونها رو تویه همون کلاسمون که به صورت Public static Class تعریف کردیم تعریف کنیم!
البته به شرط و شروطها کار میکنه! :متفکر:
به شرطی که تویه همون Name Space استفاده کنیم ازش!
یه هر حال مرسی

aligh662000
دوشنبه 30 بهمن 1385, 10:20 صبح
char ch = 'a';
Console.WriteLine("{0:X}", (int)ch);
Console.ReadLine();

البته من اب این کد یک مشکل دیگه هم دارم قرار شد معادل توابع رو بگیم
تابع
Format(Asc(t), "0000") یک خروجی داره که میشه اون رو تویه یک متغییر ریخت! و تابعی که شما نوشتید اگراشتباه نکنم نمیشه این کار رو باهاش کرد یا من نمیدونم احتمالآ :لبخند:

pooyansystem
دوشنبه 30 بهمن 1385, 10:23 صبح
میشه معادل تابع Instr رو تو #c رو بهم بگید.

aligh662000
دوشنبه 30 بهمن 1385, 10:33 صبح
میشه معادل تابع Instr رو تو #c رو بهم بگید.

تمام توابع این چنینی را در #C در خود متغییر ها تعریف میکنی!؟

مثالآ

string tx;
tx.Contains (stringValueType);

میتونی بقیه رو هم همین جوری پیدا کنی!
البته ممکن که این دقیقآ معادل instr نباشه!!!

ghafoori
دوشنبه 30 بهمن 1385, 12:29 عصر
میشه معادل تابع Instr رو تو #c رو بهم بگید.
دوست عزیز این تابع در دات نت هم است شما رفرنس microsoft.visualbasic رئ به برنامه اضافه کنید تابع instr در ان است

linux
دوشنبه 30 بهمن 1385, 13:04 عصر
در ویبی 6 و به قبل خود زبان برنامه نویسی یک سری توابعی را در اختیار شما قرار می داد ولی در .نت این زبان برنامه نویسی نیست که توابع را در اختیار شما قرار می دهد بلکه فریم ورک .نت هست
و کلا در زبان های خانواده سی اصلا چیزی به اسم توابع که برنامه به شما بدهد وجود ندارد.
همه توابع را اساسا باید خود برنامه نویس بسازد یا شرکت های نرم افزاری دیگر

aligh662000
دوشنبه 30 بهمن 1385, 13:48 عصر
در ویبی 6 و به قبل خود زبان برنامه نویسی یک سری توابعی را در اختیار شما قرار می داد ولی در .نت این زبان برنامه نویسی نیست که توابع را در اختیار شما قرار می دهد بلکه فریم ورک .نت هست
و کلا در زبان های خانواده سی اصلا چیزی به اسم توابع که برنامه به شما بدهد وجود ندارد.
همه توابع را اساسا باید خود برنامه نویس بسازد یا شرکت های نرم افزاری دیگر

ضمن تشکر از شما بحث ما اینجا اصلآ این نیست!
کمی به حاشیه رفت!
من میخواستم اگر معادلی برای بعضی از توابع VB در #C هست اونها رو بدونم اگر نیست!
بدون چه جوری میشه نوشتشون چون به #C اصلآ مسلط نیستم!
مشکل جاری هم


Format(Asc(t), "0000")

PC2st
دوشنبه 30 بهمن 1385, 16:48 عصر
در واقع یک char حاوی یک کد Unicode هست، برنامه Character Map رو حتما تابحال دیده اید که کد کاراکترها را میشود از داخل آن فهمید، کدهائی که این برنامه نمایش میدهد در مبنای 16 است، در واقع کد Unicode یک عدد در مبنای 16 است و برای اینکه یک کاراکتر را به عدد در مبنای 16 تبدیل کنیم، از تابع استاتیک Format در کلاس string استفاده میکنیم:


char ch = 'ﺁ';
string str = string.Format("{0:X}", (int)ch);

دستور دوم، مقدار Unicode کاراکتر " آ " را در مبنای 16 در رشته str قرار میدهید.
لازم نیست حتما یک کاراکتر را در مبنای 16 تبدیل کنیم، (من فکر کردم شما همون کدی رو میخواهید که توسط برنامه Character Map نمایش داده میشه!) در واقع با تبدیل یک کاراکتر به عدد، می توان کد آنرا بدست آورد (حالا ممکنه ASCII باشه یا Unicode).

در مثال زیر، (چون کاراکتر A جزو حروف اسکی هست و کاراکتر " آ " نمیتونه جزو جروف اسکی باشه و unicode هست) کد اسکی (یا Unicode) کاراکتر A در متغیر ascCode ریخته میشه:


int ascCode = (int)'A';

خیلی کدش رو خلاصه نوشتم...

aligh662000
سه شنبه 01 اسفند 1385, 10:40 صبح
char ch = 'ﺁ';
string str = string.Format("{0:X}", (int)ch);




[SIZE=2]int ascCode = (int)'A';


در واقع من با هیچ کدوم از این کدها نتونستم کد اسکی کارکترعام رو بدست بیارم و بعد به صورت چهار رقمی اونها رو ذخیره کنم!!! :ناراحت:

iranrose63
سه شنبه 01 اسفند 1385, 11:17 صبح
همونطور که دوستمونghafooti گفتن کافیه microsoft.visualbasic رو به refrenceهای برنامت اضافه کنی اون وقت به این توابع دسترسی خواهی داشت به عنوان مثال همون مساله خودت رو میشه به شکل زیر حل کرد
;("Microsoft.VisualBasic.Strings.Format(Microsoft.Vis ualBasic.Strings.Asc("t"), "0000

aligh662000
سه شنبه 01 اسفند 1385, 11:19 صبح
خوب من حل مشکل رو یافتم!!!!
معادل تابع Format در #C!!!!

int k;
k.ToString("0000");

حالا هر چی در متغییر k باشه رو به فرمت بالا نشون میده!

aligh662000
سه شنبه 22 اسفند 1385, 12:43 عصر
معادل این تابع که در vb هست


mid(string,start az long,length)

در #C چی میشه؟!

aligh662000
سه شنبه 22 اسفند 1385, 12:52 عصر
معادل تابع DoEvents که در VB6 داریم هم اگر کسی میدونه بگه در #C چی میشه؟!

iman_s52
سه شنبه 22 اسفند 1385, 13:02 عصر
همون
Application.DoEvents();
دز سی شارپ

iranrose63
سه شنبه 22 اسفند 1385, 17:04 عصر
معادل این تابع که در vb هست


mid(string,start az long,length)

در #C چی میشه؟!
(Substring(int StartPosition,int Length.متغیر از نوع string
مثال :
;" string s = "test message
;(string subs= s.Substring(0, 4
نتیجه:
subs=test

aligh662000
چهارشنبه 23 اسفند 1385, 09:32 صبح
معادل IsNumeric(t)
در #C چی میشه؟!

iranrose63
چهارشنبه 23 اسفند 1385, 17:37 عصر
نمی دونم معادلی برای این تابع تو #c هست یا نه ولی فعلا کد زیر میتونه کارت رو راه بندازه

string s = t;
bool temp=true;
for(int i=0;i<s.Length && temp;i++)
if(!char.IsDigit(s[i]))
temp=false;
if (temp)
return true;
else
return false;

haddad
چهارشنبه 23 اسفند 1385, 23:41 عصر
برای IsNumeric می تونی از دستور زیر استفاده کنی:

Char.IsDigit('1');
که یک مقدار بولین بر میگرداند

Payman62
دوشنبه 10 دی 1386, 20:44 عصر
سلام.
معادل optional در C# چیه؟
optional رو هنگام تعریف توابع و هنگام تعریف پارامترها استفاده میکنیم. اگه یه پارامتر optional باشه میشه برای اون متغیر مقداری نفرستاد.

ali_kolahdoozan
دوشنبه 10 دی 1386, 20:47 عصر
optional هیچ رقم معادل نداره یه چیزی به نام params تو #C هست که بدرد نمیخوره . آرایه میفرسته تو . باید از overload استفاده کنی

Payman62
دوشنبه 10 دی 1386, 20:51 عصر
سلام.
ممنون از راهنماییت.
ولی overload که دوباره کاریه. البته واسه کار من. در جای خودش خیلی هم مفیده.
ولی عجیبه که C# این قابلیت ساده رو نداره.

ali_kolahdoozan
سه شنبه 11 دی 1386, 11:12 صبح
چرا طرف رو میزنی خوب #C اینو نداره . کاش اتفاقا داشت . بعضی جاها بدجوری آدم از نبودش اذیت میشه . حتی ++c داره اما #c نداره . هیچ کاریش هم نمیشه کرد