Question:基于C#连续赋值的面试题介绍

我们知道C#中 a=b=c;是合法的,例如:

int i,j,k;
i=j=k=1;

下面有两道题:

第一题:


代码如下:

const int x=1;
    short y;
    object z;
    z=y=x;

//请问下面的输出是什么?
    Console.WriteLine(z.GetType().ToString());

第二题:


代码如下:

class C
 {
     private string x;
     public string X
     {
         get { return x ?? ""; }
         set { x = value; }
     }
 }

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

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

(0)

相关推荐

  • C#两个相同属性的类赋值方法

    最近有遇到两个类之间的赋值问题,两个类的属性几乎都一样的,所以写了个通过反射获取属性的然后赋值的方法,把一个类的属性的值赋值给另一个类. 框架是.net 4.5 public static D Mapper<D, S>(S s) { D d = Activator.CreateInstance<D>(); try { var sType = s.GetType(); var dType = typeof(D); foreach (PropertyInfo sP in sType.G

  • c#3.0实现延迟赋值示例

    延迟赋值主要有两点: 1.一个参数可能或可能没被赋值. 2.一个参数在一个函数中每次使用时可能被赋值. 如下面的这种情况: 复制代码 代码如下: int Add(int x, int y){    return (2 + 1) + (1);} 使用Func<T>,我们轻松实现,看代码: 复制代码 代码如下: /// <summary>/// LazyExpression/// </summary>/// <typeparam name="T"&

  • Effective C# 使用成员初始化器而不是赋值语句

    一般情况下,一个类都会有多个构造函数.随着时间的推移,成员变量.构造函数不断增加.为了处理这种情况最方便的办法就是:在声明变量的时候进行初始化,而不是在每个构造函数中进行.无论是类成员(静态变量)合适实例变量,我们都应该充分利用初始化器的语法. C#编程在,一般在声明一个变量的同时我们会对其进行初始化: 复制代码 代码如下: 1 class Employee 2 { 3 private List<Employee> empList = new List<Employee>(); 4

  • C#实现利用反射简化给类字段赋值的方法

    本文实例讲述了C#实现利用反射简化给类字段赋值的方法.分享给大家供大家参考.具体分析如下: 说明:这个例子主要的思路是建立一个类和数据库查询语句的字段结构是一致的 然后利用反射,直接用数据字段名称进行拼凑,给类对象的字段进行赋值   1.类的定义 namespace CCB_Donet.ClassFolder { public class FieldRuleInfo { public string gStrFNo; public string gStrFName; public string g

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

    题目在这里:Question:基于C#连续赋值的面试题介绍在msdn中,对=号操作符的说明如下: 赋值运算符 ( =) 将右操作数的值存储在左操作数表示的存储位置.属性或索引器中,并将值作为结果返回.操作数的类型必须相同(即右操作数必须可以隐式转换为左操作数的类型).首先来看int x,y,z;X = y = z = 1;.csharpcode, .csharpcode pre{font-size: small;color: black;font-family: consolas, "Couri

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

    我们知道C#中 a=b=c;是合法的,例如: int i,j,k;i=j=k=1; 下面有两道题: 第一题: 复制代码 代码如下: const int x=1;    short y;    object z;    z=y=x; //请问下面的输出是什么?    Console.WriteLine(z.GetType().ToString()); 第二题: 复制代码 代码如下: class C {     private string x;     public string X     { 

  • 基于Python实现扑克牌面试题

    这篇文章主要介绍了基于Python实现扑克牌面试题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 据说是腾讯的面试题,以下是要求: 一副从1到n的牌,每次从牌堆顶取一张放桌子上,再取一张放牌堆底,直到手中没牌.根据桌上的牌堆顺序,输出原先手中牌堆的顺序数组. 实现思路: 1.首先定义一个2维数组,代表最后桌上的牌堆排列情况.内部数组flist[i][0], flist[i][1]分别表示牌堆的排序和牌面的序号. 2.分n为奇数或偶数2种情况,用

  • 基于Python os模块常用命令介绍

    1.os.name---判断现在正在实用的平台,Windows返回'nt':linux返回'posix' 2.os.getcwd()---得到当前工作的目录. 3.os.listdir()--- 4.os.remove---删除指定文件 5.os.rmdir()---删除指定目录 6.os.mkdir()---创建目录(只能创建一层) 7.os.path.isfile()---判断指定对象是否为文件.是则返回True. 8.os.path.isdir()---判断指定对象是否为目录 9.os.p

  • 基于jvm java内存区域的介绍

    jvm虚拟机在运行时需要用到的内存区域.广泛一点就是堆和栈,其实不然,堆和栈只是相对比较笼统的说法,真正区分有如下几个 先上图一: 总的就是 java的内存模型 内存模型又分堆内存(heap)和方法区(有时也称为non-heap)和栈 堆又分新生代(Young)和老年代(old/Tenured) 新生代又分默认比例为8:1:1的eden空间.from survivor空间.to survivor空间 当进行垃圾回收时,eden.survivor from 存活得对象会复制到servivor to

  • 基于SpringMVC的全局异常处理器介绍

    近几天又温习了一下SpringMVC的运行机制以及原理 我理解的springmvc,是设计模式MVC中C层,也就是Controller(控制)层,常用的注解有@Controller.@RequestMapping.@Autowared.@Component,今天呢,我所要写的是SpringMVC的全局异常处理器,关联的接口有HandlerExceptionResolver(Eclipse用户可以按Ctrl+Shift+T进行搜索该接口),什么是全局异常处理器?为什么要用它呢? 在企业开发中,各种

  • 基于StringUtils工具类的常用方法介绍(必看篇)

    前言:工作中看到项目组里的大牛写代码大量的用到了StringUtils工具类来做字符串的操作,便学习整理了一下,方便查阅. isEmpty(String str) 是否为空,空格字符为false isNotEmpty(String str) 是否为非空,空格字符为true isBlank(String str) 是否为空,空格字符为true isNotBlank(String str) 是否为非空,空格字符为false trim(String str)去除字符串两端的控制符,空字符串.null

  • 基于JVM 中常见垃圾收集算法介绍

    JVM 中常见的垃圾收集算法有四种: 标记-清除算法(Mark-Sweep): 复制算法(Copying): 标记-整理(Mark-Compact): 分代收集: 下面我们来一一介绍: 一.标记-清除算法(Mark-Sweep) 这是最基础的垃圾收集算法,算法分为"标记"和"清除"两个阶段:首先标记出所有需要回收的对象,在标记完成后统一回收掉所有被标记的对象.它的主要缺点有两个:一个是效率问题,标记和清除效率都不高:另一个是空间问题,标记清除后会产生大量不连续的内存

  • 基于Python中的yield表达式介绍

    python生成器 python中生成器是迭代器的一种,使用yield返回函数值.每次调用yield会暂停,而可以使用next()函数和send()函数可以恢复生成器. 这里可以参考Python函数式编程指南:对生成器全面讲解 注意到yield是个表达式而不仅仅是个语句,所以可以使用x = yield r 这样的语法. 这个知识点在协程中需要使用.协程的概念指的是在一个线程内,一个程序中断去执行另一个程序,有点类似于CPU中断.这样减少了切换线程带来的负担,同时不需要多线程中的锁机制,因为不存在

  • Spring基于常用AspectJ切点表达式使用介绍

    execution (常用,方法级别的匹配) 语法: execution(modifiers-pattern? ret-type-pattern declaring-type-pattern?name-pattern(param-pattern) throws-pattern?) modifiers-pattern:方法的访问符,如public.protected.default,不能匹配private方法 ret-type-pattern:方法的返回值类型,例:java.util.List.j

随机推荐