黑马程序员技术交流社区

标题: 实参疑惑 [打印本页]

作者: 冯华亮    时间: 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