dotnet 方法名 To 和 As 有什么不同

在看到 dotnet 框架里面有很多方法里面用了 ToXx 和 AsXx 好像都是从某个类转换为另一个类,那么这两个方法命名有什么不同

在约定的方法命名里面,用 To 的方法表示从类 A 转为类 B 同时这两个类将没有任何关联,也就是对类 B 做的内容不会影响到原有的类 A 例如 ToString 方法

            var str = new StringBuilder();
            var foo = str.ToString();

上面代码的 str 在调用 ToString 方法之后,返回值将和原来的 StringBuilder 没有关系

而在用 As 的方法表示转换类之后,转换的类和原有的类有关联,例如 List 的 AsReadOnly 方法

            var foo = Enumerable.Range(0,100).ToList();
            var readOnlyCollection = foo.AsReadOnly();
            Console.WriteLine(readOnlyCollection.Count); // 100
            foo.RemoveAt(0);
            Console.WriteLine(readOnlyCollection.Count); // 99

虽然调用 AsReadOnly 返回了 ReadOnlyCollection 类型,但是原有的 foo 和 readOnlyCollection 是有关联的,对 foo 的修改将会影响转换类的值如上面代码,将 foo 移除了第一个之后,相应的值也会修改

在方法命名里面用 To 开始的表示转换类,同时转换的类和原有的没有关联,而使用 As 开始的表示从观测角度可以作为另一个类观测,转换的类和原有的存在关联

我搭建了自己的博客 https://blog.lindexi.com/ 欢迎大家访问,里面有很多新的博客。只有在我看到博客写成熟之后才会放在csdn或博客园,但是一旦发布了就不再更新

如果在博客看到有任何不懂的,欢迎交流,我搭建了 dotnet 职业技术学院 欢迎大家加入

知识共享许可协议
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接:http://blog.csdn.net/lindexi_gd ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系

原文地址:https://www.cnblogs.com/lindexi/p/12086771.html