C#面試題——附答案
阿新 • • 發佈:2019-01-29
錯誤呢?不清楚了。
改正:將subtract放在<script runat="server"></script>之間。
<script runat="server">
int subtract(int num1, int num2)
{
return num1 - num2;
}
</script>
2、float f=-123.567F;
int i=(int)f; i的值現在是_____?
答案:-123 (float f=123.567F時,是123)
3、下面的程式碼中有什麼錯誤嗎?_______
using System;
class A
{
public virtual void F(){
Console.WriteLine("A.F");
}
}
abstract class B:A
{
public abstract override void F();
}
——編譯通過
4、當類T只聲明瞭私有例項建構函式時,則在T的程式文字外部,_不可以_____(可以 or 不可以)從T派生出新的類,____(可以 or 不可以)直接建立T的任何例項。(答案:均受保護級別限制,不可以)
5、下面這段程式碼有錯誤麼?
switch (i){
case():
CaseZero();
break;
case 1:
CaseOne();
break;
case 2:
default:
CaseTwo();
break;
}
——原題目的default那行是:“dufault;”,我想應該是筆誤吧,改為default:後無錯,當i為2和其他值時,執行CaseTwo()。
6、在下面的例子裡
using System;
class A
{
public A(){
PrintFields();
}
public virtual void PrintFields(){}
}
class B:A
{
int x=1;
int y;
public B(){
y=-1;
}
public override void PrintFields(){
Console.WriteLine("x={0},y={1}",x,y);
}
當使用new B()建立B的例項時,產生什麼輸出?
答案:輸出為x=1,y=0(繼承的子類在new時,先new父類物件,然後new自身私有成員,當呼叫b.PrintFields()時,則輸出x=1,y=-1)
7、下面的例子中
using System;
class A
{
public static int X;
static A(){
X=B.Y+1;
}
}
class B
{
public static int Y=A.X+1;
static B(){}
static void Main(){
Console.WriteLine("X={0},Y={1}",A.X,B.Y);
}
}
產生的輸出結果是什麼? X=1,Y=2
8、下面這段程式碼輸出什麼?為什麼?
int i=5;
int j=5;
if (Object.ReferenceEquals(i,j))
Console.WriteLine("Equal");
else
Console.WriteLine("Not Equal");
答案:Not Equal——進行了裝箱操作。
改正:將subtract放在<script runat="server"></script>之間。
<script runat="server">
int subtract(int num1, int num2)
{
return num1 - num2;
}
</script>
2、float f=-123.567F;
int i=(int)f; i的值現在是_____?
答案:-123 (float f=123.567F時,是123)
3、下面的程式碼中有什麼錯誤嗎?_______
using System;
class A
{
public virtual void F(){
Console.WriteLine("A.F");
}
}
abstract class B:A
{
public abstract override void F();
}
——編譯通過
4、當類T只聲明瞭私有例項建構函式時,則在T的程式文字外部,_不可以_____(可以 or 不可以)從T派生出新的類,____(可以 or 不可以)直接建立T的任何例項。(答案:均受保護級別限制,不可以)
5、下面這段程式碼有錯誤麼?
switch (i){
case():
CaseZero();
break;
case 1:
CaseOne();
break;
case 2:
default:
CaseTwo();
break;
}
——原題目的default那行是:“dufault;”,我想應該是筆誤吧,改為default:後無錯,當i為2和其他值時,執行CaseTwo()。
6、在下面的例子裡
using System;
class A
{
public A(){
PrintFields();
}
public virtual void PrintFields(){}
}
class B:A
{
int x=1;
int y;
public B(){
y=-1;
}
public override void PrintFields(){
Console.WriteLine("x={0},y={1}",x,y);
}
當使用new B()建立B的例項時,產生什麼輸出?
答案:輸出為x=1,y=0(繼承的子類在new時,先new父類物件,然後new自身私有成員,當呼叫b.PrintFields()時,則輸出x=1,y=-1)
7、下面的例子中
using System;
class A
{
public static int X;
static A(){
X=B.Y+1;
}
}
class B
{
public static int Y=A.X+1;
static B(){}
static void Main(){
Console.WriteLine("X={0},Y={1}",A.X,B.Y);
}
}
產生的輸出結果是什麼? X=1,Y=2
8、下面這段程式碼輸出什麼?為什麼?
int i=5;
int j=5;
if (Object.ReferenceEquals(i,j))
Console.WriteLine("Equal");
else
Console.WriteLine("Not Equal");
答案:Not Equal——進行了裝箱操作。