Tin*_* Vo 8 c# generics out-parameters generic-method
我想创建一个简单的泛型函数
void Assign<T>(out T result)
{
Type type = typeof(T);
if (type.Name == "String")
{
// result = "hello";
}
else if (type.Name == "Int32")
{
// result = 100;
}
else result = default(T);
}
Run Code Online (Sandbox Code Playgroud)
用法:
int value;
string text;
Assign(value); // <<< should set value to 100
Assign(text); // <<< should set text to "hello"
Run Code Online (Sandbox Code Playgroud)
我的问题是如何编写代码来设置这些值,即.评论部分中缺少的代码.
谢谢你的帮助.
Rex*_*x M 16
看起来在这种情况下你可能正在努力避免拳击?没有更多信息很难说,但是对于这个具体的例子,它只是使用方法重载更容易,并且可能更不容易出错:
void Assign(out string value)
{
//...
}
void Assign(out int value)
{
//...
}
Run Code Online (Sandbox Code Playgroud)
对于具体学什么的目的,是错在这里,你确实需要它铸造的一般类型之前将值转换为一个对象:
(T)(object)"hello world!";
Run Code Online (Sandbox Code Playgroud)
哪个IMO非常讨厌,应该是最后的手段 - 当然不会让你的代码更清洁.
无论何时对通用参数进行类型检查,都可以很好地指出泛型不是解决问题的正确方法.进行通用参数类型检查会使代码更复杂,而不是更简单.它使一种方法负责基于类型的不同行为,而不是一系列易于更改而不会意外影响其他方法的单一方法.请参阅单一责任原则.
| 归档时间: |
|
| 查看次数: |
5621 次 |
| 最近记录: |