C#インタビューエラーが発生しやすい質問

記事ディレクトリ

1. C#では、int [] []はint型の2次元配列を定義しますか?

C#では、長方形の配列のみを2次元配列と呼ぶことができます

したがって、配列タイプは、1次元配列、2次元配列(長方形配列)、および配列の配列(千鳥配列)です。

1次元配列:

int[] numbers;

2次元配列(長方形配列):

string[,] names;

配列の配列(インターリーブ):

byte[][] scores;

2.すみません、o.MethodAは何を呼び出していますか?

using System;
namespace Application
{
    
    
abstract class BaseClass
{
    
    
    public virtual void MethodA()
    {
    
    
    }
    public virtual void MethodB()
    {
    
    
    }
}
class Class1: BaseClass
{
    
    
    public void MethodA(string arg)
    {
    
    
    }
    public override void MethodB()
    {
    
    
    }
}
class Class2: Class1
{
    
    
    new public void MethodB()
    {
    
    
    }
}
class MainClass
{
    
    
    public static void Main(string[] args)
    {
    
    
        Class2 o = new Class2();
        o.MethodA();
    }
}
}


回答:
BaseClass.MethodA

virtualキーワードは、派生クラスでオーバーライドするプロパティ検索またはメソッドを指定するために使用されます。
基本クラス(親クラス)で仮想修飾子を使用して仮想メソッドを宣言してから、派生クラス(親クラス)でオーバーライド修飾子を使用してベースをオーバーライドします。サブクラス)クラス仮想メソッド。基本クラスの仮想メソッドのオーバーロードであることを示します。
この利点は、プログラムの実行時に呼び出すメソッドを決定できることです。これは、「ランタイムポリモーフィズム」
または動的バインディングと呼ばれます。

3.refとoutに関する次の説明のうち正しいものはどれですか。()

正解:ACD
A. refパラメーターを使用して、refパラメーターに渡されたパラメーターを最初に初期化する必要があります
B. outパラメーターを使用して、outパラメーターに渡されたパラメーターを最初に初期化する必要があります
C. refパラメーターを使用して、パラメーターをrefパラメーターとして表示する必要がありますD 。outパラメータを使用する場合、パラメータは
outパラメータとしてメソッドに明示的に渡す必要があります

outとrefの両方が参照によって渡されます。渡された後、元の値は使用時に変更されます。参照によって渡すには、メソッドに明示的に渡す必要があります。

refは入力および出力です。つまり、パラメーターを渡すことができ、関数内の変数を変更すると、関数の最後の値が変更されるため、渡す前に初期化する必要があります。
outはoutのみであり、inではありません。つまり、パラメーターが渡された場合、値は無効であり、outはパラメーターをクリアするため、outから値を渡すことはできません。

単に言う

outは、メソッド内でアドレスを割り当てる操作を実行してから、アドレスを外部変数に割り当てるため、元の値を使用できず、上書きする必要があるため、初期化せずに渡すことができます。
refは、外部アドレスをメソッドに直接渡します。つまり、上記のように、元の値が確実に使用されるため、inとoutがあり、初期化する必要があります。

4.例外クラスオブジェクトはすべてSystemです。Exceptionクラスまたはそのサブクラスのオブジェクト?

正しい

5.インターフェイスは参照型であり、インターフェイスで宣言()できますが、パブリックフィールドまたはプライベートメンバー変数を宣言することはできません。

正解:A
A.メソッド、プロパティ、インデクサーとイベント
B.メソッド、プロパティ情報、プロパティ
C.インデクサーとフィールド
D.イベントとフィールド

正確には、インターフェースにはメソッドのみを含めることができます
が、属性、インデクサー、イベントの本質はメソッドであるため、そのうちの3つを含めることができます
。1。属性の本質は2つのメソッドで構成されます{get; set;};
2 .Indexインデクサーは実際には属性です。通常、インデクサーはitemという名前の属性です。インデクサーの実装を見てみましょう。

private string _names={
    
    "张",“王”,"李""赵"};
public  string this(int index)
{
    
    
get
{
    
    
   if(index<0||index>=_names.Length)
  {
    
    
      throw new ArgumentExcoption();     //报异常
  }
    return _names[indexs];
}
set
{
    
    
  _names[indexs]=values;
}
}   //这样使用的时候就可以直接使用索引来访问,尤其可见索引器实质是属性,属性实质是方法;

3.イベント自体はメソッドです

6.正しいステートメントは

Public struct Person{
    
    
 String Name;
 Int Age;
}
Public  static void Main()
{
    
    
 Hashtable A;
 Person B;
 // 其他处理代码
}

次のステートメントのどれが正しいですか()
正解:A
A. Aは参照型の変数、Bは値型
Bの変数です。Aは値型の変数、Bは参照型
Cの変数です。AとBの両方が値型変数
Dです。AとBの両方が参照型の変数です。

C#では、構造体は値型のデータ構造体です。これにより、単一の変数にさまざまなデータ型の関連データを格納できます。structキーワードは、構造体を作成するために使用されます。
構造体を定義するには、structステートメントを使用する必要があります。structステートメントは、プログラムの複数のメンバーを持つ新しいデータ型を定義します

7. C#では、インデクサーはオブジェクト内の配列情報にアクセスするために特別に使用されます

正解:いいえ

インデクサーはC#プログラミング言語のクラスのメンバーであり、オブジェクトを配列のようにインデックス付けできるため、プログラムをより直感的で簡単に作成できます。配列などのオブジェクトの添え字を使用できます。インデックスを作成することにより、クラスのデータ情報に簡単にアクセスするためのメソッドを提供します。
クラスまたは構造体でインデクサーを宣言するには、次のようにthisキーワードを使用します
。publicint this [int index]
//declareインデクサー{//getand
set access}

8.インターフェイスのメンバーは、アクセスフィールド修飾子を持つことはできませんが、他の修飾子を持つことはできますか?

正解:いいえ

クラス定義で使用できるアクセス修飾子の組み合わせ

none or internal 类只能在当前工程中访问

public 类可以在任何地方访问

abstract or internal abstract 类只能在当前工程中访问,不能实例化,只能继承

public abstract 类可以在任何地方访问,不能实例化,只能继承

sealed or internal sealed 类只能在当前工程中访问,不能派生,只能实例化

public sealed 类可以在任何地方访问,不能派生,只能实例化

以下では、C#のメソッドやクラスなどのデフォルトのアクセス修飾子を紹介します。

接口(interface)
接口成员访问修饰符默认为public,且不能显示使用访问修饰符。
(class)
构造函数默认为public访问修饰符。
析构函数不能显示使用访问修饰符且默认为private访问修饰符。
类的成员默认访问修饰符为private;

枚举(enum)
枚举类型成员默认为public访问修饰符,且不能显示使用修饰符。

结构(struct)
结构成员默认为private修饰符。
结构成员无法声明为protected成员,因为结构不支持继承。

嵌套类型
嵌套类型的默认访问修饰符为private。 和类,结构的成员默认访问类型一致

9. C#では、ボクシングの操作は値型を参照型に変換することです。

正解:AA .真
B.

ボクシング----値の参照、インストールされている場合にのみ、より適切に参照できますアンボクシング----参照値、参照された解凍プロトタイプはシンプルで覚えやすいです

10. C#でネットワーク通信プログラミングにSocketを使用する一般的な手順は、次のとおりです。Socketリスニングを確立し、()、Socketを使用してデータを送受信します。

正解:AA
.ソケット接続を確立する
B.ポート番号を
取得するC.IPアドレスを
取得するD.ホスト名を取得する

11. ASPのSessionオブジェクトのデフォルトの有効期間は何分ですか?

正解:B
A.10
B.20 C.30
D.60

プログラムでセッションの有効期限が設定されていない場合、IISで設定された有効期限に従ってセッションの有効期限が実行されます。IISのデフォルトのセッションの有効期限は20分で、IISのセッション時間は変更できます。ASPアプリケーションにログインしているユーザーの場合、ユーザーがシステムのデフォルト時間内に他の操作を実行しないと、設定された時間が経過するとすぐにユーザーのセッションが自動的に取り消されるため、システムリソースが無駄になるのを防ぎます。SessionオブジェクトのTimeOutプロパティを使用して、「有効期限」を分単位で設定できます。設定形式は、Session.TimeOut=MaxTimeです。

12.次のコード()を実行した結果はどうなりますか?

ここに画像の説明を挿入
正确回答案:B
A. Base.Func Sub.Func
B. Sub.Func Sub.Func Sub.Func
C. Sub.Func Sub.Func
D. Base.Func Sub.Func Sub.Func

分析:
コンストラクターの対象外ですが、サブクラスコンストラクターを実行すると、サブクラスコンストラクターの最初の行がデフォルトでsuper()を非表示にするため、親クラスコンストラクターが最初に呼び出され、親クラスコンストラクターにfunc( )関数。この時点で、サブクラスのコンストラクターは実際に実行されています。サブクラスの親クラスをカバーするfunc()関数があるため、サブクラスのfunc関数を使用する代わりに、サブクラスのfunc関数を検索します。親クラス。

13.以下のコードでボクシング操作()が発生する回数

String.Format("{0}:{1} , {2} , {3}" , 2012 , 1.ToString() , "2" , DateTime.Now);

正解:B
A.1
B.2
C.3
D.4

ボクシングとは?開開とは何ですか?

ボクシング:基本タイプをラッパータイプに変換するプロセス。
開箱:ラッパー型をプリミティブ型に変換するプロセス。

14. TextureBrushクラスは()名前空間に含まれています

正解:C
A. system.drawing.drawing2D
B. system.text
C. system.drawing
D. system.data

15.構造とクラスに関するどのステートメントが正しくありませんか()?

正解:B
A.構造体はSystem.ValueTypeから直接継承します
B.構造体はコンストラクターを宣言できません
C.構造体は値型ですが、クラスは参照型です
D.構造体はインターフェイスを継承できます

構造体には、メソッド、フィールド、インデックス、プロパティ、演算子メソッド、およびイベントを含めることができます。

構造体はコンストラクターを定義できますが、デストラクタは定義できません。ただし、構造体のデフォルトコンストラクターを定義することはできません。デフォルトのコンストラクターは自動的に定義され、変更できません。

クラスとは異なり、構造体は他の構造体またはクラスから継承できません。
構造体は、他の構造体またはクラスの基本構造体として機能することはできません。
構造体は、1つ以上のインターフェースを実装できます。
構造体メンバーは、抽象、仮想、または保護として指定することはできません。
New演算子を使用して構造体オブジェクトを作成すると、適切なコンストラクターが呼び出されて構造体が作成されます。クラスとは異なり、構造体はNew演算子を使用せずにインスタンス化できます。
New演算子を使用しない場合は、すべてのフィールドが初期化された後でのみ、フィールドが割り当てられ、オブジェクトが使用されます。
クラスは参照型であり、構造体は値型です。
構造体は継承をサポートしていません。
構造体はデフォルトのコンストラクターを宣言できません。

おすすめ

転載: blog.csdn.net/m0_48781656/article/details/123164590