请进来BS我...而我BS【C#面试题,并散分】帖中的绝大多数人...
关于那个帖子,我不做任何说明,一字不差将其中部分内容转帖如下...大家自己看...
[Quote=引用楼主 youbl 的帖子:]
出了一个面试题,如下:
请写出下面代码的运行结果,并解释为什么?
C# codeusing System;
public class Test1
{
public static void Main()
{
int num = 0;
Person p = new Person("Li");
A1(p, num);
Console.WriteLine("{0},{1}", p.name, num);
}
static void A1(Person p, int num)
{
p = new Person("Wang");
num = 1;
}
}
public class Person
{
public string name;
public Person(string name)
{
this.name = name;
}
}
10个人面试,10个人都回答错误,难道这题很难?
这是我在实际开发中遇到过的问题,所以列入了面试题中
你也来回答看看
并说说有没有必要面试这种题目[/Quote]
[Quote=引用 34 楼 namhyuk 的回复:]
经过五分钟多才理顺。天那!有些沮丧~本来很容易的问题。
这个根本不是理解引用传递和值传递的问题。实际上主要是变量作用域问题。
[/Quote]
[Quote=引用 40 楼 youbl 的回复:]
实际上就是引用传递和值传递的问题
对于引用类型,传递的是一个拷贝的地址,把这个拷贝的地址改变了,当然不影响原来的变量
但是对这个地址指向的东西进行了修改,自然也会影响到原来的变量
跟变量作用域有什么关系?
[/Quote]
[Quote=引用 57 楼 vrhero 的回复:]
lz的理解是错误的,这里哪里来的引用传递?以错考错,都是错...
C# code public static void Main()
{
int num = 0;
Person p = new Person("Li");//称其为p1...
A1(p, num);//p1引用的副本,不是p1了...
Console.WriteLine("{0},{1}", p.name, num);
}
static void A1(Person p, int num)//p1引用的副本...
{
p = new Person("Wang");//称其为p2...与p1不相干,与p1引用的副本也不相干...
num = 1;
}
知其然不知其所以然...同意39楼的意见...[/Quote]
[Quote=引用 71 楼 youbl 的回复:]
lz的理解是错误的,这里哪里来的引用传递?以错考错,都是错...
这里当然不是引用传递,但是一般我们称值类型以外的都是引用类型
这句话应该改一下:
实际上就是引用类型传递和值类型传递的问题 [/Quote]
[Quote=引用 77 楼 vrhero 的回复:]
难道.NET阵营如此鱼龙混杂真的是.NET门槛太低所致?...回去好好看看书或MSDN...
在C#中除非显式以ref或out声明才会按引用传递参数否则全是按值传递!不是说引用类型就会按引用传递!误区!至于后面的值类型...你还是认真学习吧...
[/Quote]
[Quote=引用 90 楼 ojlovecd 的回复:]
其实这两个参数都是值传递,num就不用说了,它是值类型,所以传递到方法中的是它的副本,而p是引用类型,但是它没有加ref或者out,所以它是以值传递引用类型,引用类型的变量不直接包含其数据;它包含的是对其数据的引用。当通过值传递引用类型的参数时,有可能更改引用所指向的数据,如某类成员的值。但是无法更改引用本身的值;也就是说,不能使用相同的引用为新类分配内存并使之在块外保持。
在楼主的示例中,p为引用类型,…[/Quote]
[Quote=引用 100 楼 youbl 的回复:]
没错,这个题目引出的问题和引用类型还是值类型确实毫无关系,这个我也知道,
因为太多人认为只要是引用类型,在方法里肯定就会改变值
所以我才出了这个题目,看应试者对引用类型的传递(不是引用传递)的理解
不知道你让我看那些答复有什么意义? [/Quote]
[Quote=引用 106 楼 youbl 的回复:]
是有矛盾,所以我后面改正了,改成是:引用类型传递和值类型传递的问题
[/Quote]
[Quote=引用 116 楼 vrhero 的回复:]
又回到这里了...说了多次了,这个题和“引用类型传递和值类型传递”没有关系,是你认为和它们有关系...在大家的提醒下,于是你摇身一变“所以我才出了这个题目,看应试者对引用类型的传递(不是引用传递)的理解”...
我可没什么好激动的,这个跟我更没关系...只是为那些应试者不值啊,虽然他们错了,却是错在同样错误的答案上...
错了要知道改,不要强辩...[/Quote]
[Quote=引用 183 楼 youbl 的回复:]
to:vrhero
你进行的修改我看了,还真以为你有什么好想法,如果是,我会虚心接受
无非是在我的题目基础上加了一个对引用类型的属性修改的语句,加了一些注释,没有任何新意,也只能让我bs你
我再次重申,我那道题目是对来面试的人进行笔试的试卷题之一,
其次因为是招外包的人,所以要求来了就能干活,没时间去培训技术知识
所以,笔试代码还加注释,写那么清楚,那我还考什么,直接告诉他,答案是什么什么就算了
更何况这个代码又不是长篇大论,只是简单几行,如果没注释就看不懂,
还能回答说是:wang,0的,只能说基础不够,无它 [/Quote]