.NET/C#汇总 —— 常用的基础语法

本文详细介绍了.NET/C#的基础语法,包括字符串初始化的区别、数值类型限制、string与StringBuilder的性能比较、扩展方法的概念、装箱与拆箱、值类型与引用类型差异、new关键字的作用、可空类型与非空类型、委托的理解、以及位运算和面向对象特性等关键知识点,旨在帮助初学者掌握.NET/C#的核心概念和用法。
摘要由CSDN通过智能技术生成

目录

1.基础语法 

1.1. 字符串中string str=null和string str=""和string str=string.Empty的区别?

1.2. byte b = 'a'; byte c = 1; byte d = 'ab'; byte e = '啊'; byte g = 256; 这些变量有些错误是错再哪⾥?

1.3.string和StringBuilder的区别,两者性能的⽐较

1.4.什么是扩展⽅法?       

1.5.byte a =255;a+=5;a的值是多少?

1.6.什么是装箱和拆箱?

1.7.值类型和引⽤类型的区别

 1.8.new关键字的作⽤?

1.9. int?和int有什么区别?

1.10. C#中的委托是什么?

1.11.⽤最有效的⽅法算出2乘以8等于⼏?

1.12.const和readonly有什么区别?

1.13.现有⼀个整数number,请写⼀个⽅法判断这个整数是否是2的N次⽅

1.14.CTS、CLS、CLR分别作何解释

1.15.在.net中,配件的意思是? 

1.16.分析下⾯代码,a、b的值是多少?

1.17.Strings = new String(“xyz”);创建了⼏个String Object?

1.18.静态成员和⾮静态成员的区别

1.19.c#可否对内存直接操作

1.20.short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?

1.21.什么是强类型,什么是弱类型?哪种更好些?为什么?

1.22.using关键字的作⽤

1.23.ref和out有什么区别

1.24.a.Equals(b)和a==b⼀样吗?

1.25.下⾯这段代码求值

1.26.关于构造函数说法正确的是哪个?

1.27.Math.Round(11.5)等於多少? Math.Round(-11.5)等于多少?

1.28.&和&&的区别

1.29. i和i有什么区别?

1.30.as和is的区别

2.面向对象

2.1什么是构造函数?

 2.2 class和struct的区别?

2.3 简述⼀下⾯向对象的三⼤特性?

2.4.构造函数是否能被重写?

2.5抽象类和接⼝有什么区别?

 2.6.类的执⾏顺序?

2.7.接⼝是否可继承接⼝?抽象类是否可实现(implements)接⼝?抽象类是否可继承实现类(concrete class)? 

2.8.继承最⼤的好处?

2.9.请说说引⽤和对象? 

2.10.什么是匿名类,有什么好处?

2.11.重写和重载的区别?

2.12.C#中有没有静态构造函数,如果有是做什么⽤的?

2.13.怎样理解静态变量?静态成员和⾮静态成员的区别?

2.14.属性能在接⼝中声明吗?

2.15.在项⽬中为什么使⽤接⼝?接⼝的好处是什么?什么是⾯向接⼝开发?

2.16.什么时候⽤重载?什么时候⽤重写?

2.17.静态⽅法可以访问⾮静态变量吗?如果不可以为什么?

2.18.在.Net中所有可序列化的类都被标记为_?

2.19.C#中 property 与 attribute的区别,他们各有什么⽤处,这种机制的好处在哪⾥?

2.20.当使⽤new B()创建B的实例时,产⽣什么输出?

2.21.能⽤foreach遍历访问的对象需要实现 接⼝或声明⽅法的类型


1.基础语法 

1.1. 字符串中string str=null和string str=""和string str=string.Empty的区别?

string.Empty相当于“”,Empty是⼀个静态只读的字段。 string str="" ,初始化对象,并分配⼀个空字符串的内存空间 string str=null,初始化对象,不会分配内存空间。

1.2. byte b = 'a'; byte c = 1; byte d = 'ab'; byte e = '啊'; byte g = 256; 这些变量有些错误是错再哪⾥?

1byte =8bit,1个汉字=2个byte,1个英⽂=1个byte=8bit 所以bc是对的,deg是错的。'a'是char类型,a错误java byte取值范围是-128~127, ⽽C#⾥⼀个byte是0~255。

1.3.string和StringBuilder的区别,两者性能的⽐较

        都是引⽤类型,分配再堆上StringBuilder默认容量是16,可以允许扩充它所封装的字符串中字符的数量.每个StringBuffer对象都有⼀定的缓冲区容量,当字符串⼤⼩没有超过容量时,不会分配新的容量,当字符串⼤⼩超过容量时,会⾃动增加容量。

         对于简单的字符串连接操作,在性能上stringbuilder不⼀定总是优于strin因为stringbulider对象的创建也消耗⼤量的性能,在字符串连接⽐较少的情况下,过度滥⽤stringbuilder会导致性能的浪费⽽⾮节约,只有⼤量⽆法预知次数的字符串操作才考虑stringbuilder的使⽤。从最后分析可以看出如果是相对较少的字符串拼接根本看不出太⼤差别。

        Stringbulider的使⽤,最好制定合适的容量值,否则优于默认值容量不⾜⽽频繁的进⾏内存分配操作,是不妥的实现⽅法。 

1.4.什么是扩展⽅法?       

⼀句话解释,扩展⽅法使你能够向现有类型“添加”⽅法,⽆需修改类型。

  • 条件:按扩展⽅法必须满⾜的条件,1.必须要静态类中的静态⽅法2.第⼀个参数的类型是要扩展的类型,并且需要添加this关键字以标识其为扩展⽅法。
  • 建议:通常,只在不得已的情况下才实现扩展⽅法,并谨慎的实现
  • 使⽤:不能通过类名调⽤,直接使⽤类型来调⽤。

1.5.byte a =255;a+=5;a的值是多少?

byte的取值范围是-2的8次⽅⾄2的8次⽅-1,-256⾄258,a+=1时,a的值时0,a+=5时,a的值是0,所以a+=5时,值是4。

1.6.什么是装箱和拆箱?

装箱就是隐式地将⼀个值类型转换成引⽤类型,如:

int i=0;

Syste.Object obj=i;

拆箱就是将引⽤类型转换成值类型,如:

int i=0;

System.Object obj=i;

int j=(int)obj;(将obj拆箱。

1.7.值类型和引⽤类型的区别

  • 值类型变量是直接包含值。将⼀个值类型变量赋给另⼀个值类型变量,是复制包含的值,默认值是0。
  • 引⽤类型变量的赋值只复制对对象的引⽤,⽽不复制对象本身,默认值是null 值类型有整形、浮点型、bool、枚举。
  • 引⽤类型有class、delegate、Object、string 值类型存储在栈中,引⽤类型存储在堆中。

 1.8.new关键字的作⽤?

运算符:创建对象实例

修饰符:在派⽣类定义⼀个重名的⽅法,隐藏掉基类⽅法

约束:泛型约束定义,约束可使⽤的泛型类型,如:

public class ItemFactory<T> where T : IComparable, new()  
 {
 }

1.9. int?和int有什么区别?

int?为可空类型,默认值可以是null int默认值是0

int?是通过int装箱为引⽤类型实现

1.10. C#中的委托是什么?

⼀句话解释就是:将⽅法当作参数传⼊另⼀个⽅法的参数。 .net中有很多常⻅的委托如:Func 、Action 作⽤:提⾼⽅法的扩展性。

1.11.⽤最有效的⽅法算出2乘以8等于⼏?

算是最快使⽤的是位逻辑左位移<<2<<3相当于0000 0000 0000 0010 216位int左移位就是 0000 0000 0001 000016的⼆)。

1.12.constreadonly么区别?

可以标识⼀个常量主要有以区别

初始化位置const必须声明的同时赋readonly即可以声明处赋也可以静态构造⽅法必须是静态构⾥赋值。

修饰对象const即可以修饰类的字段也可以修饰局变量readonly只能修饰类的字

const是编译时常量编译时确定该readonly⾏时常量在运⾏时确定该值。  

const默认是静态的readonly如果设置成静态需要显示声明

修饰引⽤类const只能修饰stringnull的其他引⽤类readonly可以是任何类型。

1.13.现⼀个整数number请写⼀个判断整数2N

41005101810001610000

取模number%2==0可以判断但是有点低

位运:(使⽤位逻辑,两个1才是1其余0判断是否等于0   4&3相当于100&011 结果是000等于0所以42n次⽅,5&4相当于101&100结果是100等于0所以52n次⽅如果要问如果是2N次⽅N是多少该怎么算

private static byte get(int n)
{
   byte number = 1;
   while (n/2!=1)
   {
      n = n / 2;
      number += 1;
   }
   return number;
}

1.14.CTS、CLS

  • 17
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜飞鼠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值