新足迹

 找回密码
 注册

精华好帖回顾

· 我(未完成)的TMB (2023-8-27) 士多可 · 为何始终无法释怀 (2008-5-10) colaice
· 除夕 流年 (2016-2-8) bosstong · 一封信:写给60岁的我(08年11月22日) (2008-11-22) shangpin
Advertisement
Advertisement
查看: 3057|回复: 43

等于几? [复制链接]

2010年度奖章获得者

发表于 2011-2-2 11:52 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
手头在做的这个项目,要接受银行传来的海量数据 (账单,statement..etc)
这些数据最终要放进variable 里 做处理的, 一个varabile, 小的也占 500M的内存。 所以对varible比以往敏感的多。

写几个渐进的例子, 大家来说说 结果等于几? (不要上机哦)

void Add(int x)
{
    x++;
}

int i = 0;
Add(i);
Console.Write(i);

此时 i = ?
足迹 Reader is phenomenal. If you never used, you never lived 火速下载
Advertisement
Advertisement

发表于 2011-2-2 11:56 |显示全部楼层
此文章由 NO1 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 NO1 所有!转贴必须注明作者、出处和本声明,并保持内容完整
1.。。。。。。。。。。。。

发表于 2011-2-2 12:00 |显示全部楼层
此文章由 梦呓人 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 梦呓人 所有!转贴必须注明作者、出处和本声明,并保持内容完整
如果是C# code的话我记得不写ref, out的话就是by value的

也就是说i还是0,对不对?

发表于 2011-2-2 12:00 |显示全部楼层
此文章由 righttang 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 righttang 所有!转贴必须注明作者、出处和本声明,并保持内容完整
不对啊, 这个i不是一个对象,函数传进去的x++并不影响到外面的i吧。。。

还是0哦

发表于 2011-2-2 12:03 |显示全部楼层
此文章由 uowzd01 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 uowzd01 所有!转贴必须注明作者、出处和本声明,并保持内容完整
是0,除非你pass ref进函数

integer是value type,进入函数后会在里面重新创建一个int,原来的不受影响

发表于 2011-2-2 12:07 |显示全部楼层
此文章由 乱码 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 乱码 所有!转贴必须注明作者、出处和本声明,并保持内容完整
面试题?靠ref/out的?
Advertisement
Advertisement

2010年度奖章获得者

发表于 2011-2-2 12:11 |显示全部楼层

回复 6# 的帖子

此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
不牵涉到ref/out, 那个就没悬念了。 这个是实打实的。

发表于 2011-2-2 12:12 |显示全部楼层
此文章由 rogerk 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 rogerk 所有!转贴必须注明作者、出处和本声明,并保持内容完整
这么一道题居然还引起讨论了。。。

发表于 2011-2-2 12:13 |显示全部楼层
此文章由 hunter38 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 hunter38 所有!转贴必须注明作者、出处和本声明,并保持内容完整
是0, 作业题?

2010年度奖章获得者

发表于 2011-2-2 12:17 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
题2:

说这个string 占1M 内存 “This is a 1M size string”

string a = "This is a 1M size string"
a +=  "This is a 1M size string'

问: 此时 占用了多少内存?

2010年度奖章获得者

发表于 2011-2-2 12:18 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 rogerk 于 2011-2-2 12:12 发表
这么一道题居然还引起讨论了。。。


这个是个引子, 我还要接着题一, 还有2个渐进题
足迹 Reader is phenomenal. If you never used, you never lived 火速下载
Advertisement
Advertisement

发表于 2011-2-2 12:20 |显示全部楼层
此文章由 righttang 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 righttang 所有!转贴必须注明作者、出处和本声明,并保持内容完整
a = 1M

a(新的2M) = a + 1M(等号后面的1M)

占用了4M,然后有1M的内存是没有ref的,下次会回收掉吧?

发表于 2011-2-2 12:39 |显示全部楼层
此文章由 典 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 典 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 righttang 于 2011-2-2 11:20 发表
a = 1M

a(新的2M) = a + 1M(等号后面的1M)

占用了4M,然后有1M的内存是没有ref的,下次会回收掉吧?


Don't understand

Firstly , why a=1M ?

Secondly, I guess
a=1M
after a++, another copy created, then a++ is 2M
1M+2M should be 3M

发表于 2011-2-2 12:55 |显示全部楼层
此文章由 findcaiyzh 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 findcaiyzh 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 righttang 于 2011-2-2 12:20 发表
a = 1M

a(新的2M) = a + 1M(等号后面的1M)

占用了4M,然后有1M的内存是没有ref的,下次会回收掉吧?


好像应该是3M吧。

2010年度奖章获得者

发表于 2011-2-2 13:17 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
题3

public class Employee
    {
        public int Salary { get; set; }
    }

    public class EmployeeService
    {
        public void AddSalary(Employee emp)
        {
            emp.Salary = 100;
        }
        
    }

var employee = new Employee { Salary = 50};
var svc = new EmployeeService();
svc.AddSalary(employee);

Console.Write(employee.Salary);

employee 1M 大。

此时内存占用多大? employee.Salary 等于几?
足迹 Reader is phenomenal. If you never used, you never lived 火速下载
头像被屏蔽

禁止发言

发表于 2011-2-2 13:18 |显示全部楼层

能来点有难度的么?

此文章由 澳贼 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 澳贼 所有!转贴必须注明作者、出处和本声明,并保持内容完整
Advertisement
Advertisement

2010年度奖章获得者

发表于 2011-2-2 13:24 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
世界上本没有难度, 简单的没吃透就成了难度了。

2010年度奖章获得者

发表于 2011-2-2 13:28 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
题4

employee.xml 100M 大。

var xml1 = XDocument.Load("employee.xml");

DataSet ds = new DataSet();
var xml2 = ds.ReadXml("employee.xml")

此时,大家猜猜内存个占多少?
头像被屏蔽

禁止发言

发表于 2011-2-2 13:28 |显示全部楼层
此文章由 澳贼 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 澳贼 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 dalaohu 于 2011-2-2 13:24 发表
世界上本没有难度, 简单的没吃透就成了难度了。


恩,有道理
签名被屏蔽

发表于 2011-2-2 13:28 |显示全部楼层
此文章由 pengruijun 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 pengruijun 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 dalaohu 于 2011-2-2 13:17 发表
题3

public class Employee
    {
        public int Salary { get; set; }
    }

    public class EmployeeService
    {
        public void AddSalary(Employee emp)
        {
            emp.Salary = 10 ...


还是 1M 大。
输出 100

发表于 2011-2-2 13:31 |显示全部楼层
此文章由 pengruijun 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 pengruijun 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 dalaohu 于 2011-2-2 13:28 发表
题4

employee.xml 100M 大。

var xml1 = XDocument.Load("employee.xml");

DataSet ds = new DataSet();
var xml2 = ds.ReadXml("employee.xml")

此时,大家猜猜内存个占多少?

300M
Advertisement
Advertisement
头像被屏蔽

禁止发言

发表于 2011-2-2 13:33 |显示全部楼层
此文章由 澳贼 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 澳贼 所有!转贴必须注明作者、出处和本声明,并保持内容完整
3, 200兆
4,
还是 1M 大。
输出 100
头像被屏蔽

禁止发言

发表于 2011-2-2 13:34 |显示全部楼层

反了

此文章由 澳贼 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 澳贼 所有!转贴必须注明作者、出处和本声明,并保持内容完整
4, 200兆
3,
还是 1M 大。
输出 100

2010年度奖章获得者

发表于 2011-2-2 13:36 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
题5

public class Employee
    {
        public int Salary { get; set; }
    }

    public class EmployeeService
    {
        public void AddSalary(Employee emp)
        {
            emp = null;
        }
        
    }

var employee = new Employee { Salary = 50};
var svc = new EmployeeService();
svc.AddSalary(employee);

Console.Write(employee.Salary);

employee 1M 大。

此时内存占用多大? employee.Salary 等于几?
足迹 Reader is phenomenal. If you never used, you never lived 火速下载
头像被屏蔽

禁止发言

发表于 2011-2-2 13:44 |显示全部楼层
此文章由 澳贼 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 澳贼 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 dalaohu 于 2011-2-2 13:36 发表
题5

public class Employee
    {
        public int Salary { get; set; }
    }

    public class EmployeeService
    {
        public void AddSalary(Employee emp)
        {
            emp = null;
    ...

----------------------------------------
是不是漏了???
签名被屏蔽

发表于 2011-2-2 13:45 |显示全部楼层
此文章由 pengruijun 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 pengruijun 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 dalaohu 于 2011-2-2 13:36 发表
题5

public class Employee
    {
        public int Salary { get; set; }
    }

    public class EmployeeService
    {
        public void AddSalary(Employee emp)
        {
            emp = null;
    ...


内存 0
salary 应该要报错了吧, 不能得到null 的 property 吧
Advertisement
Advertisement
头像被屏蔽

禁止发言

发表于 2011-2-2 13:52 |显示全部楼层

啥时候公布正确答案?

此文章由 澳贼 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 澳贼 所有!转贴必须注明作者、出处和本声明,并保持内容完整

2010年度奖章获得者

发表于 2011-2-2 13:58 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
题6

employee.xml 100M 大。

var xml1 = XDocument.Load("employee.xml");
xml1 = null;

此时,内存占用多少?

2010年度奖章获得者

发表于 2011-2-2 14:00 |显示全部楼层
此文章由 dalaohu 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dalaohu 所有!转贴必须注明作者、出处和本声明,并保持内容完整
难度是不是一点点出来了?
头像被屏蔽

禁止发言

发表于 2011-2-2 14:04 |显示全部楼层
此文章由 澳贼 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 澳贼 所有!转贴必须注明作者、出处和本声明,并保持内容完整
原帖由 dalaohu 于 2011-2-2 14:00 发表
难度是不是一点点出来了?


一开始就很难的说
签名被屏蔽

发表回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Advertisement
Advertisement
返回顶部