ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

C# 中新增类型的命名空间只需部分与其他命名空间名称相同即可破坏源码兼容性

2019-06-02 20:54:30  阅读:181  来源: 互联网

标签:C# Walterlv C++ 兼容 源码 Diagnostics 命名 Foo


我只是增加库的一个 API,比如增加几个类而已,应该不会造成兼容性问题吧。对于编译好的二进制文件来说,不会造成兼容性问题;但——可能造成源码不兼容。

本文介绍可能的源码不兼容问题。

This post is written in multiple languages . Please select yours:

 中文 English 

比如我有一个项目 P 引用 A 和 B 两个库。其中使用到了 A 库中的 Walterlv.A.Diagnostics.Foo 类型。

using Walterlv.A;
using Walterlv.B;

namespace Walterlv.Demo
{
    class Hello
    {
        Run(Diagnostics.Foo foo)
        {
        }
    }
}

现在,我们在 B 库中新增一个类型 Walterlv.B.Diagnostics.Bar 类型。

那么上面的代码将无法完成编译,因为 Diagnosis 命名空间将具有不确定的含义,其中的 Foo 类型也将无法在不确定的命名空间中找到。

本文其实是在说,即使是单纯的新增 API 也可能会导致使用库的一方在源码级不兼容。当然二进制还是兼容的。

如果有想学习c++的程序员,可来我们的C/C++学习扣qun:589348389,
免费送C++的视频教程噢!
我每晚上8点还会在群内直播讲解C/C++知识,欢迎大家前来学习哦。

 

标签:C#,Walterlv,C++,兼容,源码,Diagnostics,命名,Foo
来源: https://blog.csdn.net/XZQ121963/article/details/90742508

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有