什麼類型的操作符可用於對象類?爲什麼我不能在類型對象中使用「+」或者什麼類型的操作符可以與對象一起使用
public static void testing()
{
object test = 10;
object x = "a";
object result = test + x;//compiler error
}
爲什麼我不能用對象類型使用+
?
什麼類型的操作符可用於對象類?爲什麼我不能在類型對象中使用「+」或者什麼類型的操作符可以與對象一起使用
public static void testing()
{
object test = 10;
object x = "a";
object result = test + x;//compiler error
}
爲什麼我不能用對象類型使用+
?
默認情況下,並非每個對象都支持+
,-
或其他類型的運算符。想象以下類:
public class Weight
{
public int Value {get;set;}
}
而下列情況(以計算例如組合重量):
var w1 = new Weight { Value = 1 };
var w2 = new Weight { Value = 2 };
否則以下將導致一個編譯器錯誤:
var result = w1 + w2;
錯誤將看起來像:
Operator '+' cannot be applied to operands of type 'Weight' and 'Weight'
你必須重載+
運營商這樣的:
public class Weight
{
public int Value {get;set;}
public static Weight operator +(Weight w1, Weight w2)
{
return new Weight { Value = w1.Value + w2.Value };
}
}
現在你可以這樣做:
var result = w1 + w2;
Console.WriteLine(result.Value); //Writes: 3
規則同樣適用於-
操作:
public static Weight operator -(Weight w1, Weight w2)
{
return new Weight { Value = w1.Value - w2.Value };
}
延伸閱讀:
thanx阿巴斯for ur回覆,只是告訴我有一些默認的opertors以外的重載與對象類型use.please回覆,即使你覺得它很愚蠢的問題 – 2014-09-02 11:17:43
就像我說的,'對象'不支持這些默認的操作符,你必須超載他們創建課程時。 – Abbas 2014-09-02 11:24:43
再次感謝...對我來說,感覺很奇怪,對象類沒有簡單的操作符。只有一些方法和構造函數,它有...它是所有其他類型的父親 – 2014-09-02 11:29:47
因爲不是每一個對象都可以添加到別的東西。 「對象」是所有其他類的基類,這意味着所有類都共享它的屬性和方法。 – 2014-09-02 10:57:08
你需要定義運算符+對象(http://msdn.microsoft.com/en-US/library/8edha89s.aspx),但我不會推薦它用於比對象 – 2014-09-02 10:58:05
thanx.then有什麼可用的運算符用於對象類型 – 2014-09-02 10:59:19