C#基础试题 (简答题5道)

 1. 简要分析 out 参数、ref 参数、in 参数的区别
 

out 参数

  • 用于将数据从方法传回调用者。
  • 在方法内部,out 参数必须被赋值。
  • 调用方法时,不需要为 out 参数提供初始值。
    void Method(out int result)
    {
        result = 10;
    }
    

    ref 参数

  • 用于在方法内外共享数据。
  • 在方法内部,ref 参数不需要被赋值。
  • 调用方法时,必须为 ref 参数提供初始值。
    void Method(ref int value)
    {
        value += 10;
    }
    

    in 参数

  • 用于将数据传入方法,但不允许在方法内部修改。
  • 调用方法时,必须为 in 参数提供初始值。
    void Method(in int value)
    {
        Console.WriteLine(value);
    }
    

    2. 简单解释 continuebreak 的区别?constreadonly 有什么区别?
    continuebreak 的区别
    continue:跳过当前循环迭代,继续下一次循环。
     

    for (int i = 0; i < 10; i++)
    {
        if (i % 2 == 0)
            continue; // 跳过当前迭代
        Console.WriteLine(i);
    }
    

    break:终止当前循环,跳出循环结构。
     

    for (int i = 0; i < 10; i++)
    {
        if (i == 5)
            break; // 跳出循环
        Console.WriteLine(i);
    }
    

    constreadonly 的区别
    const:编译时常量,值在编译时确定,必须在声明时赋值,且值不能更改。

    const int ConstValue = 10;
    

    readonly:运行时常量,值在运行时可以通过构造函数赋值,但之后不能更改。
     

    readonly int ReadOnlyValue;
    public MyClass(int value)
    {
        ReadOnlyValue = value;
    }
    

    3. 简述什么是隐式转换和显式转换?
     

    隐式转换

  • 编译器自动完成的数据类型转换,无需显式指定转换。
  • 通常用于从较小范围类型转换到较大范围类型。
    int intValue = 10;
    double doubleValue = intValue; // 隐式转换
    

    显式转换

  • 需要通过强制转换操作符显式指定的数据类型转换。
  • 通常用于从较大范围类型转换到较小范围类型。
    double doubleValue = 10.5;
    int intValue = (int)doubleValue; // 显式转换
    

    4. 请简要说明 C# 中常用数据类型有哪些?值类型和引用类型在 C# 中的区别?

  • 常用数据类型

    • 值类型
      • 数值类型:int, double, float, decimal
      • 布尔类型:bool
      • 字符类型:char
      • 结构体:struct
      • 枚举:enum
    • 引用类型
      • 字符串:string
      • 数组:array
      • 类:class
      • 接口:interface
      • 委托:delegate
  • 值类型和引用类型的区别

    • 值类型
      • 直接存储数据值。
      • 在栈上分配内存。
      • 赋值时,创建的是副本。
    • 引用类型
      • 存储的是数据的引用或地址。
      • 在堆上分配内存。
      • 赋值时,创建的是引用。
         

5. 请简要说明 C# 中方法的重载(overload)和重写(override)的区别 
 

方法重载(overload)

  • 同一类中多个方法具有相同名称,但参数列表不同(参数类型或数量不同)。
  • 编译时多态性
    public void Print(int value)
    {
        Console.WriteLine(value);
    }
    
    public void Print(string value)
    {
        Console.WriteLine(value);
    }
    

    方法重写(override)

  • 子类重新定义父类中已定义的方法,必须使用 override 关键字。
  • 运行时多态性。
    public class BaseClass
    {
        public virtual void Print()
        {
            Console.WriteLine("Base class");
        }
    }
    
    public class DerivedClass : BaseClass
    {
        public override void Print()
        {
            Console.WriteLine("Derived class");
        }
    }
    

  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值