C#与Java的不同


https://www.cnblogs.com/Yan3399/p/17324904.html
1、C# 对应java中关键字:base—super、this—this、sealed—final
(1)base关键字 ——对应java super
  C#中base关键字的详解,等价java super()方法:https://blog.csdn.net/qq_45096273/article/details/106605959


 (2)this —— this

 (3)sealed —— 对应java final

 sealed关键字

应用于某个类时,sealed 修饰符可阻止其他类继承自该类。类似于Java中final关键字。
在下面的示例中,类 B 从类 A 继承,但是任何类都不能继承自类 B 。

class A {}
sealed class B : A {}

5、C#声明常量
(1)静态常量(编译时常量):const
在编译时就确定了值,必须在声明时就进行初始化且之后不能进行更改,可在类和方法中定义
const double a=3.14;// 正确声明常量的方法
※const声明的常量默认为静态的,不用实例化就可以直接调用,因此声明时不能和static关键字同时存在
 
(2)动态常量(运行时常量):readonly
在运行时确定值,只能在声明时或构造函数中初始化,只能在类中定义。
readonly int a=1;  // 声明时初始化    
readonly int b;    // 构造函数中初始化    
Program(){ b=2;  }

6、C# 实现类似java Class类的-newInstance()方法
newInstance() 方法用于创建此 Class 对象表示的类的新实例。
newInstance() 方法是一个非静态方法,它只能通过类对象访问
C#中如何实现:
Type type = Type.GetType(“TestSpace.TestClass”);
Object[] constructParms = new object[] {“hello”}; //构造器引数
TestClass obj =(TestClass)Activator.CreateInstance(type,constructParms);
//如果类的构造器是无引数的,就呼叫这个
TestClass obj = (TestClass)Activator.CreateInstance(t);
java和C#写法对比:


 

7、C#对应Java Class.forName作用
Class.forName(xxx.xx.xx)返回的是一个类,
A a = (A)Class.forName(“pacage.A”).newInstance();
这和 A a = new A(); 是一样的效果。
 
——因此,java中:Class.forName("java.lang.String")
——C# 中可用 A a = Type.GetType("java.lang.String")替代
 
8、C#跳出循环的几种方法
break语句:终止并跳出循环体。
continue语句:终止当前循环,重新开始一个新的循环。
goto语句:跳转到指定位置 。
参考:https://www.cnblogs.com/qingjiawen/p/14688195.html?ivk_sa=1024320u


12、C#异常处理,怎样将异常抛到上一层
问题:例如有两个层,逻辑层,数据层。数据层里发生异常,按以下写法程序会直接断掉,没办法抛到上一层。
异常监控:
try{}
catch(Exception ex){
  throw ex;
}
正确写法是:
try{}
catch(Exception ex){
  throw new Exeption(ex.message)
}
一个项目只要一个异常处理的地方即可(个别特殊的地方个别处理),也就是说所有的异常都在最顶层的某个地方处理,
而程序中不用关心异常处理,只要在可能出现异常的地方抛出即可。


13、C# 生成1到100整数数组的快捷方法
数组:Enumerable.Range(1, 100).ToArray();
List:Enumerable.Range(1, 100).ToList();
 
14、C# 获取1000到9999之间的随机数
newRandom().Next(1000, 9999)
 
15、C# 获取当前方法名
System.Reflection.MethodBase.GetCurrentMethod().Name
 
16、Json对象和字符串互相转化
首先项目需要引用Newtonsoft.Json.dll 程序集
  2.1)JSON对象转JSON字符串
string str =JsonConvert.SerializeObject(需要转换的json对象); 
  2.2) JSON字符串转JSON对象
var t =JsonConvert.DeserializeObject(需要转换的字符串);

问题2、window命令行进入 带空格目录会报错
用英文的双引号把带空格的目录包起来——cd C:\"Program Files"\Google\Chrome\Application


18、VS快捷键
(1)自动生成{get;set;}:输入prop,两下Tab——》直接输入数据类型,之后一下Tab输入属性名
(2)整段添加#region:选中注释内容(可忽略),ctrl+K、S,选择region
(3)智能提示:ctrl+J
(4)方法参数提示:ctrl+shift+空格
(5)打cw,两下tab,快速生成console.WriteLine();


一个 @引号字符串:

@"runoob.com";
C# string 字符串的前面可以加 @(称作"逐字字符串")将转义字符(\)当作普通字符对待,比如:

string str = @"C:\Windows";
等价于:

string str = "C:\\Windows";
@ 字符串中可以任意换行,换行符及缩进空格都计算在字符串长度之内。

string str = @"";

C# 9 新功能“源代码生成器
2020 年 11 月发布的 C# 9.0,融入了.NET 5 的新功能——源码生成器(source generators)
https://zhuanlan.zhihu.com/p/540471270
把包含Person的程序集载入类似ILSpy的反编译软件,你会发现相等方法已被自动实现了。如下图所示。

你可能感兴趣的:(技术,Java,开发语言,java,C#)