• <output id="aynwq"><form id="aynwq"><code id="aynwq"></code></form></output>

    <mark id="aynwq"><option id="aynwq"></option></mark>
  • <mark id="aynwq"><option id="aynwq"></option></mark><label id="aynwq"><dl id="aynwq"></dl></label>
  • 學習啦 > 創業指南 > 職場 > 面試題 > C#習題大全

    C#習題大全

    時間: 文樺657 分享

    C#習題大全

      C#是面向對象的編程語言。它使得程序員可以快速地編寫各種基于MICROSOFT .NET平臺的應用程序,MICROSOFT .NET提供了一系列的工具和服務來最大程度地開發利用計算與通訊領域。C#使得C++程序員可以高效的開發程序,且因可調用由 C/C++ 編寫的本機原生函數,因此絕不損失C/C++原有的強大的功能。因為這種繼承關系,C#與C/C++具有極大的相似性,熟悉類似語言的開發者可以很快的轉向C#。

      今天學習啦小編就與大家分享:C#習題大全!

    C#習題

      1.String str=new String("a")和String str = "a"有什么區別?

      String str = "a"; 這個只是一個引用,內存中如果有“a"的話,str就指向它,如果沒有才創建如后還用到"a"這個字符串的話并且是這樣用: String str1 = "a"; String str2 = "a"; String str2 = "a"; 這4個變量都共享一個字符串"a" 而String str = new String("a");是根據"a"這個String對象再次構造一個String對象,將新構造出來的String對象的引用賦給str

      2.判斷字符串變量str是否為空的一下三種方法哪個性能更優

      a、str=="";b、str==String.Empty;c、str.Length==0;?答案是c;

      3.string與String的區別

      string、int是C#定義的類型,而String、Int32是.net類型即是CTS類型; string 是 .NET 框架中 System.String 的別名。string在編譯的時候會轉化為String類

      4.虛方法(virtual )和抽象方法(abstract)的區別?

      1:抽象方法僅有聲明,而沒有任何實現,如abstract someMethod();,虛方法卻不能如此

      virtual用于修飾方法、屬性、索引器或事件聲明,并使它們可以在派生類中被重寫。

      2:子類繼承父類,可以對父類中的虛方法進行重寫、覆蓋、不處理三種處理(見5),對抽象方法卻必須實現

      5.子類對父類中虛方法的處理有重寫(override)和覆蓋(new),請說明它們的區別?

      有父類ParentClass和子類ChildClass、以及父類的虛方法VirtualMethod。有如下程序段:

      ParentClass pc = new ChildClass();pc.VirtualMethod(...);

      如果子類是重寫(override)父類的VirtualMethod,則上面的第二行語句將調用子類的該方法

      如果子類是覆蓋(new)父類的VirtualMethod,則上面的第二行語句將調用父類的該方法

      6.抽象類(abstract)和接口(interface)的區別

      抽象類可以有自己的實現,接口卻僅有聲明,可以有自己的靜態數據字段;

      java和C#中可以實現多個接口,卻只能繼承一個抽象類(或者非抽象類)(單繼承,和c++的多繼承不同);

      7.填空:

      (1)面向對象的語言具有 繼承性、多態性、封裝性。

      (2)能用foreach遍歷訪問的對象需要實現 _IEnumerable___接口或聲明_GetEnumerator_方法的類型。

      (3)列舉ADO.net中的五個主要對象

      Connection,Command,DataReader,DataAdapter,DataSet

      connection 連接對象

      command 命令對象,指示要執行的命令和存儲過程!

      datareader是一個向前的只讀的數據流。

      dataadapter是功能強大的適陪器,支持增刪改查的功能

      dataset是一個數據級對象,相當與內存中的一張表或多張表

      8.不定項選擇:

      (1) 以下敘述正確的是:BC

      A. 接口中可以有虛方法。 B. 一個類可以實現多個接口。

      C. 接口不能被實例化。 D. 接口中可以包含已實現的方法。

      (2) 從數據庫讀取記錄,你可能用到的方法有: BCD

      A. ExecuteNonQuery B. ExecuteScalar C. Fill D. ExecuteReader

      9.簡述 private、 protected、 public、 internal 修飾符的訪問權限。

      A.Private:關鍵字是一個成員訪問修飾符。私有訪問是允許的最低訪問級別。私有成員只有在聲明它們的類和結構體中才是可訪問的, 同一體中的嵌套類型也可以訪問那些私有成員

      B.Protected 關鍵字是一個成員訪問修飾符。受保護成員在它的類中可訪問并且可由派生類訪問。有關 protected 與其他訪問修飾符的比較,請參見可訪問性級別,只有在通過派生類類型發生訪問時,基類的受保護成員在派生類中才是可訪問的

      C.Internal關鍵字是類型和類型成員的訪問修飾符。只有在同一程序集的文件中,內部類型或成員才是可訪問的

      D Protected Internal 它可以看作是Protected與Internal的并集,意思是:如果是繼承關系,無論在不在同一程序集里都能訪問;如果不是繼承關系,那么只能在同一程序集內訪問。

      E.Public具有最高級別的訪問權限,對訪問成員沒有限制。

      10.寫出一條Sql語句:取出表A中第31到第40記錄(SQLServer, 以自動增長的ID作為主鍵, 注意:ID

      可能不是連續的。)

      11.列舉ASP.NET 頁面之間傳遞值的幾種方式。

      QueryString,Session和Server.Transfer

      12.寫出程序的輸出結果

      class Class1 {

      private string str = "Class1.str";

      private int i = 0;

      static void StringConvert(string str) {

      str = "string being converted.";

      }

      static void StringConvert(Class1 c) {

      c.str = "string being converted.";

      }

      static void Add(int i) {

      i++;

      }

      static void AddWithRef(ref int i) {

      i++;

      }

      static void Main() {

      int i1 = 10;

      int i2 = 20;

      string str = "str";

      Class1 c = new Class1();

      Add(i1);

      AddWithRef(ref i2);

      Add(c.i);

      StringConvert(str);

      StringConvert(c);

      Console.WriteLine(i1);

      Console.WriteLine(i2);

      Console.WriteLine(c.i);

      Console.WriteLine(str);

      Console.WriteLine(c.str);

      }

      }

      13.寫出程序的輸出結果

      public abstract class A

      {

      public A()

      {

      Console.WriteLine('A');

      }

      public virtual void Fun()

      {

      Console.WriteLine("A.Fun()");

      }

      }

      public class B: A

      {

      public B()

      {

      Console.WriteLine('B');

      }

      public new void Fun()

      {

      Console.WriteLine("B.Fun()");

      }

      public static void Main()

      {

      A a = new B();

      a.Fun();

      }

      }

      14.寫出程序的輸出結果:

      public class A

      {

      public virtual void Fun1(int i)

      {

      Console.WriteLine(i);

      }

      public void Fun2(A a)

      {

      a.Fun1(1);

      Fun1(5);

      }

      }

      public class B : A

      {

      public override void Fun1(int i)

      {

      base.Fun1 (i + 1);

      }

      public static void Main()

      {

      B b = new B();

      A a = new A();

      a.Fun2(b);

      b.Fun2(a);

      }

      }

      15.一列數的規則如下: 1、1、2、3、5、8、13、21、34......求第30位數是多少, 用遞歸算法實現。

      16.程序設計: 貓大叫一聲,所有的老鼠都開始逃跑,主人被驚醒。(C#語言)

      要求: 1.要有聯動性,老鼠和主人的行為是被動的。2.考慮可擴展性,貓的叫聲可能引起其他聯動效應。

      參考答案

      1.(1) 繼承性、封裝性、多態性。 (2) IEnumerable 、 GetEnumerator (3) 對ADO.net的了解

      2. (1) B、C (考對接口的理解) (2) B、C、D (考查對ADO.net的熟練程度)

      3. private : 私有成員, 在類的內部才可以訪問。protected : 保護成員,該類內部和繼承類中可以訪問。public : 公共成員,完全公開,沒有訪問限制。internal: 在同一命名空間內可以訪問。

      4. 解1: select top 10 * from A where id not in (select top 30 id from A)

      解2: select top 10 * from A where id > (select max(id) from (select top 30 id from A )as A)

      5. 1.使用QueryString, 如....id=1; response. Redirect()2.使用Session變量3.使用Server.Transfer

      6. (考查值引用和對象引用)

      10

      21

      0

      Str

      string being converted.

      7. A B

      A.Fun()

      (考查在繼承類中構造函數, 以及new 方法, )

      8. 2

      5

      1

      6

      評分標準: 答對一點得2分,兩點得5分,3點得7分。全對得10分。

      9.

      public class MainClass

      {

      public static void Main()

      {

      Console.WriteLine(Foo(30));

      }

      public static int Foo(int i)

      {

      if (i <= 0)

      return 0;

      else if(i > 0 && i <= 2)

      return 1;

      else return Foo(i -1) + Foo(i - 2);

      }

      }

      評分標準: 寫出return Foo(i -1) + Foo(i - 2); 得5分。

      寫出if(i > 0 && i <= 2) return 1; 得5分。

      方法參數過多需要扣分(扣除分數 = 參數個數 - 1)

      不用遞歸算法扣5分

      (遞歸算法在樹結構建立等方面比較常用)

      10.要點:1. 聯動效果,運行代碼只要執行Cat.Cryed()方法。2. 對老鼠和主人進行抽象

      評分標準: <1>.構造出Cat、Mouse、Master三個類,并能使程序運行(2分)

      <2>從Mouse和Master中提取抽象(5分)

      <3>聯動效應,只要執行Cat.Cryed()就可以使老鼠逃跑,主人驚醒。(3分)

      public interface Observer

      {

      void Response(); //觀察者的響應,如是老鼠見到貓的反映

      }

      public interface Subject

      {

      void AimAt(Observer obs); //針對哪些觀察者,這里指貓的要撲捉的對象---老鼠

      }

      public class Mouse : Observer

      {

      private string name;

      public Mouse(string name, Subject subj)

      {

      this.name = name;

      subj.AimAt(this);

      }

      public void Response()

      {

      Console.WriteLine(name + " attempt to escape!");

      }

      }

      public class Master : Observer

      {

      public Master(Subject subj)

      {

      subj.AimAt(this);

      }

      public void Response()

      {

      Console.WriteLine("Host waken!");

      }

      }

      public class Cat : Subject

      {

      private ArrayList observers;

      public Cat()

      {

      this.observers = new ArrayList();

      }

      public void AimAt(Observer obs)

      {

      this.observers.Add(obs);

      }

      public void Cry()

      {

      Console.WriteLine("Cat cryed!");

      foreach (Observer obs in this.observers)

      {

      obs.Response();

      }

      }

      }

      class MainClass

      {

      static void Main(string[] args)

      {

      Cat cat = new Cat();

      Mouse mouse1 = new Mouse("mouse1", cat);

      Mouse mouse2 = new Mouse("mouse2", cat);

      Master master = new Master(cat);

      cat.Cry();

      }

      }

      //---------------------------------------------------------------------------------------------設計方法二: 使用event -- delegate設計..

      public delegate void SubEventHandler();

      public abstract class Subject

      {

      public event SubEventHandler SubEvent;

      protected void FireAway()

      {

      if (this.SubEvent != null)

      this.SubEvent();

      }

      }

      public class Cat : Subject

      {

      public void Cry()

      {

      Console.WriteLine("cat cryed.");

      this.FireAway();

      }

      }

      public abstract class Observer

      {

      public Observer(Subject sub)

      {

      sub.SubEvent += new SubEventHandler(Response);

      }

      public abstract void Response();

      }

      public class Mouse : Observer

      {

      private string name;

      public Mouse(string name, Subject sub) : base(sub)

      {

      this.name = name;

      }

      public override void Response()

      {

      Console.WriteLine(name + " attempt to escape!");

      }

      }

      public class Master : Observer

      {

      public Master(Subject sub) : base(sub){}

      public override void Response()

      {

      Console.WriteLine("host waken");

      }

      }

      class Class1

      {

      static void Main(string[] args)

      {

      Cat cat = new Cat();

      Mouse mouse1 = new Mouse("mouse1", cat);

      Mouse mouse2 = new Mouse("mouse2", cat);

      Master master = new Master(cat);

      cat.Cry();

      }

      }

      18.有哪幾種方法可以實現一個類存取另外一個類的成員函數及屬性,并請舉列來加以說明和分析.

    288037 主站蜘蛛池模板: 亚洲精品成人片在线播放| 最近电影在线中文字幕| 小呦精品导航网站| 哒哒哒免费视频观看在线www| 久久久久久久久久久久久久久久久久| 免费看v片网站| 欧美69xxxxx另类| 国产精品亚洲欧美大片在线观看| 国产MD视频一区二区三区| 亚洲国产精品无码成人片久久| WWW国产成人免费观看视频| 男生和女生一起差差的视频30分| 好吊色永久免费视频大全| 免费看国产一级片| 久久亚洲一区二区| 色狠狠一区二区三区香蕉蜜桃 | 天天爱添天天爱添天天爱添| 国产乱人视频在线播放不卡| 久久国产亚洲高清观看| 14萝自慰专用网站| 欧美人体一区二区三区| 国产精品99久久久久久董美香| 亚洲av网址在线观看| 999久久久无码国产精品| 正在播放91大神调教偷偷| 国产精品无码一区二区三级| 亚洲免费网站观看视频| 亚洲jizzjizz妇女| 欧美视频在线观| 好深好爽办公室做视频| 亚洲综合色一区二区三区小说 | 国产亚洲福利一区二区免费看| 久久99热精品| 精品一区二区三区视频| 在线a亚洲视频播放在线观看| 亚洲国产精品久久久久婷婷软件| 欧美大bbbxxx视频| 日本19禁综艺直接啪啪| 国产精品区一区二区三在线播放| 久热青青青在线视频精品| 肌肌对肌肤肤30分钟软件大全免费|