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例》【全面避坑+最佳实践=健壮代码】
  • 相关阅读:
    使用cwRsync实现windows下文件定时同步【转】
    asp.net负载均衡方案[转]
    SQL Server复制入门(一)----复制简介【转】
    使用ServiceStackRedis链接Redis简介 [转]
    Sqlserver事务发布实现数据同步
    C#MongoDB 分页查询的方法及性能
    C#基础-Func,Action
    OpenERP 的XML-RPC的轻度体验+many2many,one2many,many2one创建方式
    使用xml-rpc调试openerp模块中的函数
    Odoo(OpenERP)开发实践:通过XML-RPC接口访问Odoo数据库
  • 原文地址:https://www.cnblogs.com/lovecherry/p/1136624.html
Copyright © 2011-2022 走看看