• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C#教程 > Question:基于C#连续赋值的面试题(解答)

Question:基于C#连续赋值的面试题(解答)

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了question,question是什么意思,question怎么读,out of question,out of the question等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
题目在这里:Question:基于C#连续赋值的面试题介绍

在msdn中,对=号操作符的说明如下:
image 
赋值运算符 ( =) 将右操作数的值存储在左操作数表示的存储位置、属性或索引器中,并将值作为结果返回。
操作数的类型必须相同(即右操作数必须可以隐式转换为左操作数的类型)。
首先来看
int x,y,z;X = y = z = 1;
1:z=1,将1赋值给z,接着返回1,
2:y=(z=1),将返回的1赋值给y,并返回1,
3:x=(y=(z=1)),将表达式2的结果1赋值给x。
接着看第一道题:
const int x=1;short y;object z;z=y=x;

首先要说明的是x是const,因为const是编译时常量,所以
Z=y=x;在编译的时候就会变成z=y=1。
1:y=1,因为y是short,所以1被转换为short,所以返回值为1(short);
2:将y=1返回的结果,也就是1(short)赋值给z,所以z是1(short)装箱后的对象,
GetType返回System.Int16.
值得一提的是,如果你将上面的const int x=1中的const去掉,代码如下:
int x=1;short y;object z;z=y=x;

因为x是Int32,y是Int16,因为Int32无法隐式转换成Int16.所以这段代码无法通过编译:
clip_image002
接着考虑第二题:

static void Main()
{
    C c = new C();
    object z;
    z = c.X = null;

    //下面两句话输出什么
    System.Console.WriteLine(z == null);
    System.Console.WriteLine(c.X == null);
}
</div>

关键就是分析:z=c.X=null;

1:c.X=null;调用c的setX方法,设置x=null,并且将null作为值返回。

2:z=(c.X=null);因为c.X=null,返回了null,所以将null赋值给z,z此时为null;

3:Console.WriteLine(z==null),返回True;

4:Console.WriteLine(c.X==null),调用c的getX方法,方法返回””,所以c.X==null,返回False。

你都做对了吗?

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Question:基于C#连续赋值的面试题(解答)
  • Question:基于C#连续赋值的面试题介绍

相关文章

  • 2017-05-28C#反射在实际应用中的实例代码
  • 2017-05-28C# 4.0 大数的运算--BigInteger的应用详解
  • 2017-05-28C# WinForm开发中使用XML配置文件实例
  • 2017-05-28C#使用foreach语句遍历二维数组的方法
  • 2017-05-28C#队列Queue用法实例分析
  • 2017-05-28C# 绘制统计图大全(柱状图, 折线图, 扇形图)
  • 2017-05-28C#简单的加密类实例
  • 2017-05-28在多线程中调用winform窗体控件的实现方法
  • 2017-05-28C#迷你猜数实例分析
  • 2017-05-28C#实现矩阵乘法实例分析

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 遍历文件系统目录树的深入理解
    • c#生成缩略图的实现方法
    • C#画笔Pen保存和恢复图形对象的设置方法
    • C#使用Windows Service的简单教程(创建、安装、卸载、调试)
    • 如何使用C#程序给PDF文件添加编辑域
    • C#拼图游戏编写代码
    • c#不使用windows api函数打开我的电脑和获取电脑驱动器信息
    • C#实现winform中RichTextBox在指定光标位置插入图片的方法
    • C#验证码问题的快速解决方法
    • C#中数组初始化、反转和排序用法实例

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有