نوشته شده توسط
__H2__
سلام به برادران شفیق! به جوانان رشید دات نت کار!
سلام بر استاد عزیز و گرامی...
از نظر من همه کاربران سایت، استاد هستند، من هم به عنوان یک دانشجو با اساتید بحث و گفتگو میکنم، چون اساتید همواره از دید دیگری به قضیه نگاه میکنند و دانشجویان یک دید دانشجوئی روی قضیه دارند :)
از کجا به این نتیجه رسیدید که Global در VB.Net وجود ندارد ؟!؟!؟!؟!؟!؟!
از اونجائی که این قابلیت رو پیدا نکردم! عجب دلیل مزخرفی! :(
از نکته ای که گفتید ممنونم... ایرادم برطرف شد.
همانطوری که قبلاً بحث شد، Syntax دلیل نیست به قول دوستی، شما از سینتکس A خوشتان می آید و آن را قوی و راحت میدانید و من از B !!!!
راستش بهتر بود یک مثال میزدم :)
اینم یک مثال از سنتکس قابلیت انعطاف :
for( int a = 0, b = 0; a < 5; a++, b++ )
{
MessageBox.Show( ((int)( a * b )).ToString() );
}
اگر معادل حلقه for فوق رو دقیقا مثال بالا، در بیسیک.نت پیدا کنید ممنون میشم...
مثلاً دو تعریف زیر را در نظر بگیرید، کدام خلاصه تر هستند؟؟؟؟؟؟
استفاده از using در سی# مشکل رو حل میکنه.
حالا چی؟ چه چیزی مشکل رو حل میکنه؟ مثل زیر :
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
End Class
یا :
public class Form1 : Form
{
private void Form1_Load( object sender, EventArgs e )
{
}
}
راستی من مطلب فوق را در #C نمیدانستم! یعنی اگر دو Interface که دارای دو متد هم نام باشند در کلاسسی تعریف شوند، چه میشود ؟
هیچ مشکلی پیش نمیاد :) میشه هر کدومش رو به طور واضح پیاده سازی کرد. برای اینکار قبل از نام متد، نام اینترفیس اضافه میشه.
public interface A
{
void A();
}
public class B : A
{
void A.A()
{
}
}
در بیسیک.نت :
Public Interface A
Sub A()
End Interface
Public Class B : Implements A
Public Sub A() Implements A.A
End Sub
End Class
حالا کدومشون تایپ کمتری لازم دارند ؟؟!
حال ادامه بحث !!
در عوض در VB.Net هم عملگر ^ برای توان (خودتان هم گفتید) ونیز =^ برای توان رسانی سریع را داریم!!!!
دوست عزیز نوشته بودم که :
موارد کوچک دیگری هم هست که بد نیست عنوان بشه، میتونه خیلی بیشتر از موارد زیر باشه :
بعدش اون مورد بیسیک.نت ( استفاده از ^ ) و در سی#، استفاده از عملگر انتسابی بیتی و ... رو در اونجا نوشتم! چون درسته که تفاوت دارند ولی میتوان مشابهشون رو در دیگر زبان پیدا کرد. پس فکر نمیکنم اینجا مشکلی وجود داشته باشه :) و یک سوء تفاهم کوچولو رخ داده.
به نظر من اصلاً ضعف نیست و کمال قدرت است! کلمه کلیدی Implements کاملاً روابط را مشخص میکند و کدی تمیز و بی نقص میدهد!
فرض کنید کلاسهای دات نت فریم ورک رو به همین شیوه مینوشتند! دیگه معلوم نبود هر متد برای چه اینترفیسی نوشته شده و عملا باعث بهم ریختگی کلاسها میشه.
مثلا یک کلاس ToString رو به نام ToMyStr و یکی دیگه به نامه String و دیگری به نام ConvertToString استفاده میکرد! که این مورد هم به ماهیت دو زبان بر میگرده.