可以說我有三個對象如何總結多個對象一起
object o1, o2, o3
這些對象的
o1 = 1
o2 = 2
o3 = 3
值爲了簡單起見
現在我想補充這些對象一起得到6的總和,但+
運算符不能用於對象。這些對象可以用什麼方法進行總結而不需要廣泛地轉換它們?
使用對象而不是int
等的原因是由於使用了由SQL查詢填充的DataTable
。然後,我從該DataTable
中獲取一個值,並將其分配給o1
作爲示例。
可以說我有三個對象如何總結多個對象一起
object o1, o2, o3
這些對象的
o1 = 1
o2 = 2
o3 = 3
值爲了簡單起見
現在我想補充這些對象一起得到6的總和,但+
運算符不能用於對象。這些對象可以用什麼方法進行總結而不需要廣泛地轉換它們?
使用對象而不是int
等的原因是由於使用了由SQL查詢填充的DataTable
。然後,我從該DataTable
中獲取一個值,並將其分配給o1
作爲示例。
如果實際製作自己的對象類型,則可以重載加號運算符。例如,我懷疑還有其他方法可以做到這一點,例如:
然後,我從該DataTable中獲取一個值,並將其作爲示例分配給o1。
您可以在當時將它分配給int
。但是,如果你真的想使用一些對象,因爲你需要在未來創造出更多的行爲,你將對象類型:Q
// overload operator +
public static YourObject operator +(YourObject a, YourObject b)
{
return new YourObject(a.theValuePropertyInt + b.theValuePropertyInt);
}
但你不會是能夠總結類型的C#的Object
,因爲它不會使+運算符超載。
基本上,您正試圖在不告訴編譯器需要int行爲的情況下使用特定於對象的行爲(整數數學)。
最終,問這是否只是一個int
,或其他類型。如果它真的只是一個int
,就會在您提取時投射。
以下應該給你的答案,但理想情況下,它會更好地保持使用DataReader從數據庫完整的int類型。
public int SumMyObjects(List<object> objs)
{
int sum =0;
foreach(var obj in objs)
{
try
{
sum += Convert.ToInt32(obj);
}
catch
{
// obj wasn't a valid int
}
}
return sum;
}
以int形式獲取數據表中的值。投它。 – Jonesopolis
你可以修改sql查詢來使用這樣的查詢來計算這些值,然後只是將值轉換爲一個'int'? – dcg
@Jonesopolis我寧願將對象轉換爲int,因爲在我需要它作爲int之前,我將它用作對象。如何將對象有效地轉換爲int? –