zoukankan      html  css  js  c++  java
  • 不错的quiz

    using System;
    using System.Collections.Generic;

    namespace abcd
    {
        
    class Program
        
    {
            S s;
            
    struct S
            
    {
                
    public int x; //public int x = 0 编译错误?解释为什么
            }


            C c 
    = new C();
            
    class C
            
    {
                
    public int x = 0;
            }
            
            
            
    void print()
            
    {
                Console.WriteLine(
    "{0}\t{1}", s.x, c.x);
            }


            
    void Foo1(S s, C c)
            
    {
                s.x
    ++;
                c.x
    ++;
                print();
            }


            
    void Foo2(S s, C c)
            
    {
                s 
    = new S();
                c 
    = new C();
                print();
            }


            
    void Foo3(ref S s, ref C c)
            
    {
                s.x
    ++;
                c.x
    ++;
                print();
            }


            
    void Foo4(ref S s, ref C c)
            
    {
                s 
    = new S();
                c 
    = new C();
                print();
            }
           

            
    void Test()
            
    {
                Foo1(s, c);
                Foo2(s, c);
                Foo3(
    ref s, ref c);
                Foo4(
    ref s, ref c);
                
    // 输出结果,解释为什么:
                
    // 0    1
                
    // 0    1
                
    // 1    2
                
    // 0    0

                List
    <S> l1 = new List<S>();
                l1.Add(s);
                
    //l1[0].x++; 编译错误?解释为什么

                S[] l 
    = new S[1];
                l[
    0= new S();
                l[
    0].x++;
                
    // 数组OK,解释为什么

                List
    <C> l2 = new List<C>();
                l2.Add(c);
                l2[
    0].x++;
                
    // OK,解释为什么
            }


            
    static void Main()
            
    {
                
    new Program().Test();
            }
           
        }

    }


    解释每一个为什么,并且画出对象在内存中的布局变化图!
    欢迎大家阅读我的极客时间专栏《Java业务开发常见错误100例》【全面避坑+最佳实践=健壮代码】
  • 相关阅读:
    剑指OFFER----面试题17- 打印从1到最大的n位数
    剑指OFFER----面试题16. 数值的整数次方
    剑指OFFER----面试题15. 二进制中1的个数
    剑指OFFER----面试题14- II. 剪绳子II
    07 多层if判断
    08 while循环
    06 if 流程控制
    03 身份运算符、逻辑运算符
    04 位运算符、运算符优先级
    02 赋值运算符、成员运算符
  • 原文地址:https://www.cnblogs.com/lovecherry/p/1136624.html
Copyright © 2011-2022 走看看