C# 可访问性不一致:参数类型比方法可访问性低 问题分析
2013-10-23 13:30
507 查看
在实现ISOData聚类算法时遇到这个问题,
代码定义如下:
![](https://img-blog.csdn.net/20131023131050515?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvSGVsbG9KaWxs/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
然后报错:
![](https://img-blog.csdn.net/20131023131108859?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvSGVsbG9KaWxs/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
问题分析:
因为方法bubbleShort()是public的,所以在class类外事可以访问到的, 它的参数distance类型是在同一个class类中定义为private(默认),在class类外是不能访问到的,
这样就出现一个问题:当我要在class类外访问方法bubbleShort()时,我无法知道distance是什么东西(因为他是class类私有的),这样也就无法使用方法bubbleShort().
解决方法:
1. 把方法和参数的可访问性改都为private,只能在类内使用.
2. 把方法和参数的可访问性改都为public,都可在类外使用.
3. 把方法可访问性改都为private,参数的可访问性改为public, 只能在类内使用方法.
代码定义如下:
然后报错:
问题分析:
因为方法bubbleShort()是public的,所以在class类外事可以访问到的, 它的参数distance类型是在同一个class类中定义为private(默认),在class类外是不能访问到的,
这样就出现一个问题:当我要在class类外访问方法bubbleShort()时,我无法知道distance是什么东西(因为他是class类私有的),这样也就无法使用方法bubbleShort().
解决方法:
1. 把方法和参数的可访问性改都为private,只能在类内使用.
2. 把方法和参数的可访问性改都为public,都可在类外使用.
3. 把方法可访问性改都为private,参数的可访问性改为public, 只能在类内使用方法.
相关文章推荐
- c#调用COM组件
- c#中虚函数的相关使用方法
- 浅析C# web访问mysql数据库-整理归纳总结
- C# IP地址与整数之间转换的具体方法
- C#实现的阴历阳历互相转化类实例
- C# 的关键字详细介绍
- c# 获得局域网主机列表实例
- 关于C# Math 处理奇进偶不进的实现代码
- c# 随机函数的使用详解
- c#之圆形无标题栏椭圆窗体的实现详解
- C#页面之间跳转功能的小结
- 浅析C# 基础语法的使用
- C#中将字符串转换为整型的三种解决方法总结
- 深入c# GDI+简单绘图的具体操作步骤(一)
- C#中英文混合字符串截取函数
- C# 面向对象的基本原则
- 使用C#开源文件实时监控工具Tail&TailUI介绍
- C# 正则判断一个数字的格式是否有逗号的代码
- C# 参考之访问关键字:base、this
- c#结构和类的相关介绍