SajjadKhati
کاربر فعال <A href="http://forum.majidonline.com/f
سلام استاد علی
تشکر از شما و آقا سجاد برای پاسخ ها
1- چرا باید حتما از متد BigInteger.Multiply برای ضرب کردن استفاده کنیم؟ مثلا من کد رو اینجوری می نویسم خطا می گیره
کد:BigInteger temp = Bigfactorial(n - 1) * new BigInteger(n));
یا گلپسر ، سلام (کلا من میگم ، استاد هر جا موردی دیدن ، تصحیح کنن که دیگه گفتن نداره) .
1) چون وقتی میتونی عملگرها (مثل همین جمع و ضرب و ...) را برای نوع داده ای ای بکار ببری که اون عملگر برای اون نوع داده ای ، تعریف (overload) شده باشه . حالا یا در سطح زبان سی شارپ یا در سطح clr و ... .
اگه این کد ، ارور میده و انجام نمیشه ، بخاطر اینه که عملگر مورد نظر برای این نوع داده ای (BigInteger) ، پیاده سازی نشد .
کد اصلی هم که اینطوریه
کد:BigInteger temp = BigInteger.Multiply(Bigfactorial(n - 1), new BigInteger(n));
2- حالا اگه BigInteger.Multiply() رو در نظر بگیریم می تونیم بگیم که Multiply یک متد از استراکچر BigInteger ئه چون اگه بگیم عضوش هست ولی انگار مثل یک متد داره کاری انجام میده.
اصلا من آخرش نفهمیدم متد یک کلاس بودن چه فرقی با عضو یک کلاس یا استراکچر بودن داره مثل همین Multiply . اصلا عضو با متد فرقش چیه.
بله . Multiply ، یک عضو (عضوِ متد) از استراکچر BigInteger هست .
متد ، یکی از انواع مختلف از عضوهای یک کلاس هست .
یک کلاس (یا استراکچر و ...) ، میتونن انواع مختلفی از اعضا را داشته باشن . میتونن ، متد داشته باشن ، میتونن پروپرتی داشته باشن . میتونن فیلد داشته باشن ، میتونن آرایه داشته باشن ، میتونن ایندکسر داشته باشن . میتونن رویداد و خلاصه خیلی از اعضا را داشته باشن که متد ، یکی از انواعِ این اعضا هست (البته هر عضوی که کلاس داشته باشه ، استراکچر یا اینترفیس ها ، نمیتونن همه ی اون نوع اعضا را داشته باشن) .