Nazarite

导航

C#基础问题

 c#中bin,obj,properties文件

Bin 目录用来存放编译的结果,bin是二进制binrary的英文缩写,因为最初C编译的程序文件都是二进制文件,它有Debug和Release两个版本,分别对应的文件夹为bin/Debug和bin/Release,这个文件夹是默认的输出路径,我们可以通过:项目属性—>配置属性—>输出路径来修改。
  obj是object的缩写,用于存放编译过程中生成的中间临时文件。其中都有debug和release两个子目录,分别对应调试版本和发行版本,在.NET中,编译是分模块进行的,编译整个完成后会合并为一个.DLL或.EXE保存到bin目录下。因为每次编译时默认都是采用增量编译,即只重新编译改变了的模块,obj保存每个模块的编译结果,用来加快编译速度。是否采用增量编译,可以通过:项目属性—>配置属性—>高级—>增量编译来设置。
  Properties文件夹 定义你程序集的属性 项目属性文件夹 一般只有一个 AssemblyInfo.cs 类文件,用于保存程序集的信息,如名称,版本等,这些信息一般与项目属性面板中的数据对应,不需要手动编写。
  .cs 类文件。源代码都写在这里,主要就看这里的代码。
  .resx 资源文件,一些资源存放在这里,一般不需要看。
  .csproj C#项目文件,用VS打开这个文件就可以直接打开这个项目,自动生成,不需要看。
  .csproj.user 是一个配置文件,自动生成的,会记录项目生成路径、项目启动程序等信息。也不需要看。
  .Designer.cs 设计文件,自动生成,不需要看。
  .aspx 是网页文件,HTML代码写在这里面。
  sln:在开发环境中使用的解决方案文件。它将一个或多个项目的所有元素组织到单个的解决方案中。此文件存储在父项目目录中.解决方案文件,他是一个或多个.proj(项目)的集合
  *.sln:(Visual Studio.Solution) 通过为环境提供对项目、项目项和解决方案项在磁盘上位置的引用,可将它们组织到解决方案中。
  比如是生成Debug模式,还是Release模式,是通用CPU还是专用的等
  本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wanlixingzhe/archive/2009/12/23/5060750.aspx

C#面试基础问题

传入某个属性的set方法的隐含参数的名称是什么?
  value,它的类型和属性所声名的类型相同。
  如何在C#中实现继承?
  在类名后加上一个冒号,再加上基类的名称。
  C#支持多重继承么?
  不支持。可以用接口来实现。
  被protected修饰的属性/方法在何处可以访问?
  在继承或间接继承与这个类的子类中可以访问。
  私有成员会被继承么?
  会,但是不能被访问。所以看上去他们似乎是不能被继承的,但实际上确实被继承了。 ( 在我看来, 子类继承父类的一切东西. <Thinking in JAVA>中说到, 子类对象拥有父类对象的完整拷贝. 实例化一个类是从最顶级的超类开始实例化的, 是一层一层的包裹结构. private限制访问方式只能在类的内部, 这仅仅是一个访问控制, 实际上子类对象拥有父类对象的一切.)
  请描述一下修饰符protected internal。
  被protected internal修饰的属性/方法只能在它的在同一个程序集(Assembly)中的子类被访问。
  C#提供一个默认的无参数构造函数,当我实现了另外一个有一个参数的构造函数时候,还想保留这个无参数的构造函数。这样我应该写几个构造函数?
  两个,一旦你实现了一个构造函数,C#就不会再提供默认的构造函数了,所以需要手动实现那个无参数构造函数。
  C#中所有对象共同的基类是什么?
  System.Object.
  重载和覆写有什么区别?
  重载提供了对一个方法签名的不同参数调用的实现。覆写提供了子类中改变父类方法行为的实现。
  在方法定义中,virtual有什么含意?
  被virtual修饰的方法可以被子类覆写。
  能够将非静态的方法覆写成静态方法么?
  不能,覆写方法的签名必须与被覆写方法的签名保持一致,除了将virtual改为override。
  可以覆写私有的虚方法么?
  不可以,甚至子类中无法访问父类中的私有方法。
  能够阻止某一个类被其他类继承么?
  可以,使用关键字sealed。
  能够实现允许某个类被继承,但不允许其中的某个方法被覆写么?
  可以,标记这个类为public,并标记这个方法为sealed。
  什么是抽象类(abstract class)?
  一种不可以被实例化的类。抽象类中一般含有抽象方法,当然也可有具体实现。继承类只有实现过所有抽象类的抽象方法后才能被实例化。
  何时必须声明一个类为抽象类?
  当这个类中包含抽象方法时,或是该类并没有完全实现父类的抽象方法时。
  接口(interface)是什么?
  只含有共有抽象方法(public abstract method)的类。这些方法必须在子类中被实现。
  为什么不能指定接口中方法的修饰符?
  接口中的方法用来定义对象之间通信的契约,指定接口中的方法为私有或保护没有意义。他们默认为公有方法。
  可以继承多个接口么?
  当然。
  那么如果这些接口中有重复的方法名称呢?
  这种情况中你可以决定如何实现。当然需要特别得小心。但是在编译环节是没有问题的。
  接口和抽象类的区别是什么?
  接口中所有方法必须是抽象的,并且不能指定方法的访问修饰符。抽象类中可以有方法的实现,也可以指定方法的访问修饰符。
  如何区别重载方法?
  不同的参数类型,不同的参数个数,不同的参数顺序。
  const和readonly有什么区别?
  const关键字用来声明编译时常量,readonly用来声明运行时常量。
  System.String 和System.StringBuilder有什么区别?
  System.String是不可变的字符串。System.StringBuilder存放了一个可变的字符串,并提供一些对这个字符串修改的方法。
  本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/thy822/archive/2009/12/23/5060689.aspx

  

ASP.NET中使用web.config配置web应用程序中的数据库


  你会经常碰到这种情况:几乎在网站的每个页面上,存储一些全局处理信息。理想的做法是将这些信息一次性的集中存储在资料档案库中,而不是在网站的每个页面上都重复这样的操作。比如说数据库连接串就是这样的信息,如果这些信息不是集中存储在特定区域中,而是在网站的每个需要连接数据库的页面上手工输入,可以设想:当数据库连接串改动时将会令人头痛,你必须遍历网站中所有连接数据库的页面去修改!
  在ASP.NET中,通过Web.config,你可为使用 <appSettings> 标记,在这个标记中,你可用 <add ... /> 标记定义0到多个设置。本文中我们主要讨论了如何使用web.config来配置一个web应用程序中的数据库连接。
  web.config文件是标准的xml文件,我们可以使用它来为一台机器下的每一个web应用程序或某个应用程序或一个目录下的asp.net页面来进行设置,当然,它也可以为一个单独的web页面进行设置。
  如:网站的主目录是\inetpub\wwwroot\,那么我们将web.config放置于其下,那么这个网站中的应用程序将被web.config中的设置所影响。
  e.g.:
  <?xml version="1.0" encoding="gb2312" ?>
  <configuration>
  <system.web>
  <compilation defaultlanguage="vb" debug="true" />
  <customerrors mode="remoteonly" defaultredirect="js/error.htm">
  <error statuscode="404" redirect="js/filenotfound.aspx" />
  <error statuscode="500" redirect="js/error.htm" />
  </customerrors>
  <authentication mode="windows" />
  <authorization>
  <allow users="*" />
  </authorization>
  <httpruntime maxrequestlength="4000" usefullyqualifiedredirecturl="true" executiontimeout="45" />
  <trace enabled="false" requestlimit="10" pageoutput="false" tracemode="sortbytime" localonly="true" />
  <sessionstate mode="inproc" stateconnectionstring="tcpip=127.0.0.1:43444" cookieless="false" timeout="20" />
  <globalization requestencoding="gb2312" responseencoding="gb2312" fileencoding="gb2312" />
  </system.web>
  <appsettings>
  <add key="connstring" value="uid=flash;password=3.1415926;database=news;server=(local)" />
  </appsettings>
  </configuration>
  这里我们讨论一下如何在web.config中设置数据库连接。
  1、连接一个数据库:
  在web.config中的<configuration>后加入
  <appsettings>
  <add key="connstring"
  value="uid=flash;password=3.1415926;database=news;server=(local)" />
  </appsettings>
  在程序中,你可以使用以下代码来使用web.config中的设置:
  -----vb.net-----
  imports system.configuration
  dim myvar as string
  myvar=configurationsettings.appsettings("connstring"
  -----c#-----
  using system.configuration;
  string myvar;
  myvar=configurationsettings.appsettings["connstring"];
  2、连接多个数据库
  同理,那就是使用多个不同的key值来设置
  3、设置不同子目录下应用程序的数据库链接
  这是一个很有意思的方法,在设置前,先说明一下它的用途:
  如果在一个虚拟目录下有多个子目录,每一个子目录下下的web应用程序都需要连接不同的数据库,这如何做呢??
  一种方法是在每一个子目录下分别建立一个web.config,用它来设置这个目录下的数据库连接。但这种方法的问题是需要维护每一个了目录下的web.config。
  方法二,是只在虚拟目录下建立一个web.config,在它里面设置每一个子目录下的应用程序的数据库连接。说到这里,你会想到上面的第二种方法,使用多个不同的key值来设置,这的确是一个办法。
  这里,我想说明的是另一种方法:在虚拟目录下布置web.config,在其中使用location标记,使用同一个key值来连接数据库,这样做的好处很明显,因为用同一个key值,将导致在所有目录下的应用程序中,都可以使用共同的语句来连接数据库,这在程序以后发生位置迁移时,并不用修改程序中连接数据库的语句。
  具体设置如下:
  <location path="news">
  <appsettings>
  <add key="connstring" value="uid=flyangel;password=3.1415926;database=news;server=(local)" />
  </appsettings>
  </location>
  <location path="bbs">
  <appsettings>
  <add key="connstring" value="uid=flyangel;password=3.1415926;database=bbs;server=(local)" />
  </appsettings>
  </location>
  <location path="soft">
  <appsettings>
  <add key="connstring" value="uid=flyangel;password=3.1415926;database=soft;server=(local)" />
  </appsettings>
  </location>
  注:上例中news、bbs、soft分别是虚拟目录下的子目录。
  程序中使用连接时,采用下面的方法:
  public function getconnectionstring()
  configurationsettings.appsettings().item("connstring"
  end sub
  最后需要说明的一点是,为了有效地利用.config文件,你应当创建标准的键名和值定义供所有的应用程序开发人员所用。这样就可以让同一项目的开发人员采用公共的项目设置。这些标准在部署应用程序和将其转化为产品的时候非常有用。
  
  本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/yunazhaozile/archive/2009/12/23/5060746.aspx

C#面向对象 基础概念25个及答案

http://blog.csdn.net/xinyuhome/archive/2009/12/23/5060128.aspx

 

posted on 2010-02-09 16:58  Nazarite  阅读(270)  评论(0编辑  收藏  举报