PDA

View Full Version : مقایسه داده ها از نوع object



zehs_sha
سه شنبه 18 اسفند 1383, 18:51 عصر
سلام من کلاس زیر را نوشته ام اما از من ایراد می گیرد چگونه مشکلم حل می شود



public class ObjectCompare
{
private object one;
private object two;

public ObjectCompare(object a,object b){
this.one =a;
this.two =b;
}
public void compare(){
if (one>two)
System.Console.WriteLine("One Is Biger");
else if (one<two)
System.Console.WriteLine("Two Is Biger");
else
System.Console.WriteLine("Equal");

}
}

C# Programmer
سه شنبه 18 اسفند 1383, 19:06 عصر
سلام

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


if ((int)one < (int)two)

اینو بنویس فکر کنم درست بشه :موفق:

M.GhanaatPisheh
سه شنبه 18 اسفند 1383, 20:21 عصر
راجع به LateBinding تحقیق کنید.
شما زمانی که نوع Object رو تعریف می کنید نوع داده ای که می خواید ذخیره کنید براتون دقیقا مشخص نیست.
Object زمانی که داده ای بهش انتصاب داده می شه نوعش مشخص می شه.
به این خاصیت LateBinding گفته می شه.

زمان مقایسه بین دو Object یا شرکت دادن یه Object توی یه عبارت باید نوعش مشخص بشه
(بوسیله Type Casting همونجوری که دوستمون توی Post قبلی اشاره کردن)

Peyman_Ranjbar
چهارشنبه 19 اسفند 1383, 00:36 صبح
از این را فقط می تونی مساوی بودنش رو تحقیق کنی



if(one.Equal(two))
System.Console.WriteLine("Equal");
else
System.Console.WriteLine("Not Equal");

C# Programmer
چهارشنبه 19 اسفند 1383, 09:40 صبح
سلام

من کد این دوستمون رو یکم تغییر دادم و به این شکل درش آوردم



public class ObjectCompare : Form1
{
private object one;
private object two;

public ObjectCompare(object a,object b)
{
this.one =a;
this.two =b;
}
public void compare()
{
if ((int)one>(int)two)
base.Text = "One Is Biger";
else if ((int)one<(int)two)
base.Text = "Two Is Biger";
else
base.Text = "Equal";

}
}

در داخل کلاس به درستی text فرم عوض میشد ولی وقتی از کلاس خارج میشد باز به شکل اول بر می گشت
چرا؟ :گیج:

zehs_sha
شنبه 22 اسفند 1383, 09:21 صبح
:flower: :تشویق: به همه