【修订版】C#/ASP.Net 面试题及答案(1)
发布日期:2021-08-11 20:02:30 浏览次数:2 分类:技术文章

本文共 3263 字,大约阅读时间需要 10 分钟。

这些题目都来源于网络,参考之前的答案,针对每道题做了简单的分析,恳请大家批评指正。

1. 简述 private、

protected、 public、 internal 修饰符的访问权限。
答:本题考察 类的成员的可访问性。

可访问性的关键字有如下5个:

internal:在所属程序集中可以访问。

private:私有成员,

在当前类中可以访问。

protected:保护成员,在当前类及其子类中可以访问。

public:公共成员,完全公开,没有访问限制。

internal

protected:在所属程序集或当前类的子类中可以访问。(题目中未提及)
【扩展】

类的修饰符:abstract,sealed,static,unsafe 4个。

abstract:类是抽象的,不能创建类的实例

sealed:类是密封的,不能被继承

static:类是静态的,只有静态成员,没有非静态成员

unsafe:类有非安全的结构,比如指针

2 .列举ASP.NET

页面之间传递值的几种方式。
答:有 querystring,cookie,session,server.transfer,application 5种方式。

【扩展】

1.使用QueryString方式(或称url传值、Response.Redirect传值),这是最简单的方式,因为传递的值在浏览器的url中会显示出来,所以用来传递没有安全要求的值。

发送页面代码:

1
Response.Redirect(
"
index.aspx?username=
"
+
txtUserName.Text.Trim());

接收页面代码:

1
if
(Request.QueryString[
"
username
"
]
!=
null
)
2
{
3
    strUserName
=
Request.QueryString[
"
username
"
];
4
}

2.使用cookie方式,cookie由服务器创建,但是保存在客户端

发送页面代码:

1
HttpCookie userName
=
new
HttpCookie(
"
username
"
);
2
userName.Value
=
this
.txtUserName.Text.Trim();
3
Response.Cookies.Add(userName);
4
Response.Redirect(
"
index.aspx
"
);

接收页面代码:

1
if
(Request.Cookies[
"
username
"
]
!=
null
)
2
{
3
    strUserName
=
Request.Cookies[
"
username
"
].Value;
4
}

3.使用Session变量,session在用户向服务器发出首次请求时被创建,在服务器端,在用户关闭浏览器或异常发生时终止(还有别的session过期情况)。

发送页面代码:

1
Session[
"
username
"
]
=
this
.txtUserName.Text.trim();
2
Response.Redirect(
"
index.aspx
"
);

接收页面代码:

1
if
(Session[
"
username
"
]
!=
null
)
2
{
3
    strUserName
=
Session[
"
username
"
].ToString();
4
}

4.使用Application变量

发送页面代码:

1
Application[
"
username
"
]
=
this
.txtUserName.Text.trim();
2
Response.Redirect(
"
index.aspx
"
);

接收页面代码:

1
if
(Application[
"
username
"
]
!=
null
)
2
{
3
    strUserName
=
Application[
"
username
"
].ToString();
4
}

5.使用Server.Transfer方式(或称为HttpContext方式),要传递的变量可以通过属性或方法来获得,使用属性比较容易一些。

发送页面制作一个属性:

 

1
public
string
GetName
2
{
3
   
get
{
return
this
.txtUserName.Text.Trim(); }
4
}

发送页面代码:

1
Server.Transfer(
"
index.aspx
"
);

接收页面代码:

1
w
=
(WebForm4)Context.Handler;
2
strUserName
=
w.GetName;

3.重写、重载和隐藏三个概念的区别。

答:

重写(override)指用override关键字重新实现基类中的虚方法,在运行过程中,无论通过哪个类型的引用,真正对象类型的方法将被调用。

重载(overload)指多个方法共享一个名字并且拥有相同的返回值,但是拥有不同的参数。

隐藏(new)指用new关键字重新实现基类中的方法,在运行的过程中通过引用的类型判断应该调用哪个类型的方法。

【扩展】

重写实现的是运行时多态,重载实现的是编译时多态。

ExpandedBlockStart.gif
代码
1
public
class
FatherClass
2
{
3
   
public
virtual
void
Method()
4
    {
5
        Console.WriteLine(
"
FatherClass.Method
"
);
6
    }
7
}
8
public
class
ChildClass : FatherClass
9
{
10
   
public
override
void
Method()
11
    {
12
        Console.WriteLine(
"
ChildClass.Method
"
);
13
    }
14
}
15
public
class
NewClass:FatherClass
16
{
17
   
public
new
virtual
void
Method()
18
    {
19
        Console.WriteLine(
"
NewClass.Method
"
);
20
    }
21
}
22
public
class
OverloadClass
23
{
24
   
public
void
MethodA()
25
    {
26
        Console.WriteLine(
"
MethodA:
"
);
27
    }
28
   
public
void
MethodA(
string
str1)
29
    {
30
        Console.WriteLine(
"
MethodA:
"
+
str1);
31
    }
32
   
public
void
MethodA(
string
str1,
string
str2)
33
    {
34
        Console.WriteLine(
"
MethodA:
"
+
str1
+
"
,
"
+
str2);
35
    }
36
}
37
38
public
static
void
Main()
39
{
40
    FatherClass fcOverride
=
new
ChildClass();
41
    fcOverride.Method();
42
    FatherClass fcNew
=
new
NewClass();
43
    fcNew.Method();
44
45
    OverloadClass oc
=
new
OverloadClass();
46
    oc.MethodA();
47
    oc.MethodA(
"
1
"
);
48
    oc.MethodA(
"
1
"
,
"
2
"
);
49
}

转载于:https://www.cnblogs.com/Jessy/archive/2011/08/31/2160778.html

转载地址:https://blog.csdn.net/weixin_30633949/article/details/97053352 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Android - UriMatcher ContentUris
下一篇:cocos2dx添加android的webView cocos2d-x在iOS Android添加WebView

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月15日 22时49分12秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章