当前位置: 首页 > news >正文

C#面试题

基本概念

装箱和拆箱

装箱的过程,是将 值类型 转换为 引用类型 的过程; 拆箱则是将引用类型转换为值类型。

int val = 100; 
object obj = val; //装箱
int num = (int) obj; //拆箱

委托(delegate)

委托(Delegate) 是存有对某个方法的引用的一种引用类型变量。说白了就是类似指向函数方法的指针。

事件(event)是委托吗

设计模式

单例模式(最优解)

懒汉模式——顾名思义就是懒,没有对象需要调用它的时候不去实例化,有人来向它要对象的时候再实例化对象,因为懒,比我还懒

using System;
using System.Collections.Generic;
/// <summary>
/// 适用于在多线程的情况下保证只有一个实例化对象的情况,例如银行的操作系统
/// </summary>
namespace DoubleLockInstance
{//----------------------------------// 双重锁定单例public sealed class Singleton{// 定义一个类对象,用于内部实现private static Singleton myInstance;// readonly   -   这个成员只能在“类初始化”时赋值  ,所谓的类初始化,就是直接在类里面初始化// 变量标记为 readonly,第一次引用类的成员时创建实例private static readonly object lockRoot = new object ();// 设置构造方法为私有,这样就不能在外部实例化类对象了private Singleton (){}// 实例化对象的方法public static Singleton GetInstance (){// 外部不能实例化对象,但是能调用类里面的静态方法// 外部需要调用这个方法来使用类对象,如果对象不存在就创建// 这里面使用两个判断是否为null的原因是,我们不需要每次都对实例化的语句进行加锁,只有当对象不存在的时候加锁就可以了if (myInstance == null) {// 锁定的作用就是为了保证当多线程同时执行这句代码的时候保证对象的唯一性// 锁定会让同时执行这段代码的线程排队执行// lock里面需要用一个已经存在的对象来判断,所以不能使用myInstancelock (lockRoot) {// 这里还需要一个判断的原因是,如果多线程都通过了外层的判断进行排队// 那将会实例化多个对象出来,所以这里还需要进行一次判断,保证线程的安全if (myInstance == null) {myInstance = new Singleton ();}}}return myInstance;}}
}

http://www.lryc.cn/news/259278.html

相关文章:

  • python源码,在线读取传奇列表,并解析为需要的JSON格式
  • 二叉排序树的判断(二叉树的顺序存储):2022年408算法题
  • Kubernetes版本升级到v1.18.0方法
  • 了解 git rebase
  • 程序员的养生之道:延寿健康的十大秘诀(下)
  • 【java】保留前N月数据文件,定期删除数据
  • 12.9_黑马数据结构与算法笔记Java
  • K8S学习指南(1)-docker的安装
  • vue3 + mark.js 实现文字标注功能
  • 运筹优化 | 模拟退火求解旅行商问题 | Python实现
  • 1017 A除以B
  • SAP UI5 walkthrough step8 Translatable Texts
  • RocketMQ-源码架构二
  • Unity_ET框架项目-斗地主_启动运行流程
  • 自动化测试框架 —— pytest框架入门篇
  • String类详解
  • Linux高级管理--安装MySQL数据库系统
  • 团建策划信息展示服务预约小程序效果如何
  • 一个Redis实例最多能存放多少keys
  • K8S(四)—pod详解
  • shiro Filter加载和执行 源码解析
  • IDEA上传jar包到Maven
  • JavaScript——基本语法
  • 一款最近很火的开源低代码平台
  • vue之代理配置devServer(vue.config.js)片段
  • CTD测试流程
  • 面试经典150题(15-19)
  • Linux下的网络服务
  • 制造业对于IT软硬件监控和摄像头故障监控的需求
  • idea一些报错