在CLR中投放与使用'as'关键字 - Casting vs using the 'as' keyword in the CLR
问题:
When programming interfaces, I've found I'm doing a lot of casting or object type conversion. 在对接口进行编程时,我发现我正在做大量的转换或对象类型转换。
Is there a difference between these two methods of conversion? 这两种转换方法之间有区别吗? If so, is there a cost difference or how does this affect my program? 如果是这样,是否存在成本差异,或者这对我的计划有何影响?
public interface IMyInterface
{
void AMethod();
}
public class MyClass : IMyInterface
{
public void AMethod()
{
//Do work
}
// Other helper methods....
}
public class Implementation
{
IMyInterface _MyObj;
MyClass _myCls1;
MyClass _myCls2;
public Implementation()
{
_MyObj = new MyClass();
// What is the difference here:
_myCls1 = (MyClass)_MyObj;
_myCls2 = (_MyObj as MyClass);
}
}
Also, what is "in general" the preferred method? 另外,“一般”是什么首选方法?
解决方案:
参考一: http://stackoom.com/question/253Y参考二: Casting vs using the 'as' keyword in the CLR
「其他文章」
- 用 JavaScript 计算昨天的日期 - Calculate the date yesterday in JavaScript
- 允许保留 2 位小数 - Allow 2 decimal places in
- 在 Android 上防止屏幕旋转 - Prevent screen rotation on Android
- 如何更新 RecyclerView 适配器数据 - How to update RecyclerView Adapter Data
- 日历重复/重复事件 - 最佳存储方法 - Calendar Recurring/Repeating Events - Best Storage Method
- (13:权限被拒绝)连接到上游时:[nginx] - (13: Permission denied) while connecting to upstream:[nginx]
- 如何使用 git 检查 GitHub 拉取请求? - How can I check out a GitHub pull request with git?
- 正则表达式:删除包含“帮助”等的行 - Regex: Remove lines containing “help”, etc
- >>>和>>之间的区别 - Difference between >>> and >>
- JavaScript 中反引号 (`) 的用法 - Usage of the backtick character (`) in JavaScript
- C 模板typedef - C template typedef
- 仅添加非空白更改 - Add only non-whitespace changes
- Python中exit()和sys.exit()之间的区别 - Difference between exit() and sys.exit() in Python
- Git:仅列出“未跟踪”的文件(还有自定义命令) - Git: list only “untracked” files (also, custom commands)
- 谷歌使用什么数据库? - What database does Google use?
- 在CLR中投放与使用'as'关键字 - Casting vs using the 'as' keyword in the CLR
- 值对的 Java 集合? (元组?) - A Java collection of value pairs? (tuples?)
- 'git 责备' 有什么作用? - What does 'git blame' do?
- 蚂蚁警告:“'includeantruntime'未设置” - ant warning: “'includeantruntime' was not set”
- 如何在不等待的情况下安全地调用 C# 中的异步方法 - How to safely call an async method in C# without await