在课堂上,我们正在处理泛型,并被要求完成一项任务.
我们创建了一个Account<T>具有一个属性的类,private T _balance;然后必须编写信用和借记的方法_balance.
Credit method(部分)从Main调用例如acc1.Credit(4.6);:
public void Credit(T credit)
{
Object creditObject = credit;
Object balanceObject = _balance;
Type creditType = creditObject.GetType();
Type balanceType = balanceObject.GetType();
if(creditType.Equals(balanceType))
{
if(creditType.Equals(typeof (double)))
{
balanceObject= (double)balanceObject + (double)creditObject;
}
...WITH more else if's on int,float and decimal.
}
_balance = (T)balanceObject;
}
Run Code Online (Sandbox Code Playgroud)
我不得不对我进行条件检查和施法,_balance += (T)balanceObject;因为这会给出错误"Operator '+' cannot be applied to operand of type 'T'"
在我阅读这个主题时,我发现了这种dynamic类型.在我的新Account类中,我添加了一个新方法并将方法更改Credit为:(从Main调用例如acc1.Credit(4.6);)
public void Credit(dynamic credit)
{
_balance += ConvertType(credit);
}
public T ConvertType(object input)
{
return (T)Convert.ChangeType(input, typeof(T));
}
Run Code Online (Sandbox Code Playgroud)
这是我不明白的.credit方法将对象作为类型接收dynamic,ConvertType(object input)并将其作为类型返回T.为什么使用动态类型允许我在泛型上使用运算符?
| 归档时间: |
|
| 查看次数: |
593 次 |
| 最近记录: |