黑马程序员技术交流社区
标题:
实参疑惑
[打印本页]
作者:
冯华亮
时间:
2012-8-12 19:04
标题:
实参疑惑
在c#中进行参数传递时,比如形参是字符时,如何确定传入的字符一定存在?
作者:
张可
时间:
2012-8-12 19:10
取值,之后进行测试 if(a == null) 或者 a.equal(null)
作者:
丁慧
时间:
2012-8-12 20:22
通过设断点调试,或者输出可查看是否有值。
作者:
冯华亮
时间:
2012-8-12 22:55
我是想问 如何确定传入的字符存在?换言之就是如何确定你传入的’字符‘就是字符?不是验证。
作者:
dmcnero90
时间:
2012-8-12 23:29
在C#里面 引用类型 的参数 和对象 内部保存的都只是引用. → 当前实例存放在 托管堆上的地址
当你的一个方法 ShowName(string name) 调用 并传递一个 参数进去的时候. 其实本质上 ShowName 方法获取到的是当前参数的引用.
引用有没有数据 这个方法是不管的.
当时此方法会通过参数的引用 得到当前参数的类型指针 → 它根据你传入的参数 是否为 string类型 或者是string 类型的子类.如果 上述两种情况都成立的话.
那么在编译器的级别 它会让你编译通过. 但是到运行的时候,如果 你之前传递的引用 确实没有值的话 那么就被报一个非常经典的错误 "未将参数对象引用到参数的实例" .
补充一点: 当你方法的参数 为string的时候,那么你传递的参数 就必须为string类型. 原因是 string 类 在.NET 中被申明成了一个密封类.密封类不能被继承.
在C#中 方法的参数是协变的. 但是 string 是一个密封类 它不具备 参数协变的前提.
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2