C#+VS开发PC端应用

2021-03-08 10:30

阅读:347

标签:内部类   led   语法糖   ado   Collector   失败   main方法   att   protect   

需要使用modbus rtu,如何安装第三方包?

Tools->Extention Manager->搜索NuGet Package Manager->安装->重启vs

vs项目中找到References->右键选择Manage NuGet packages...->搜索NModbus4->安装

VS2010老掉牙了,很多包都不支持,建议换VS2015及以上版本

如果发现插件无法卸载,请以管理员身份运行vs


 VS2020多个类中有Main方法会报错?

右键项目名->Properties->Startup objects中选择要测试的类


 

 

Win form组件布局问题:

用好anchor和dock

anchor和dock水火不容,后设置的属性会覆盖掉先设置的属性

anchor:锚点,像钉子一样钉住上下左右,默认左上,试过全钉住,和默认一样

dock:停靠,和锚点最大的区别是会填充

组件居中:好难,table layout容器可以解决,三行三列,组件放中间


 C#编程风格

建议函数名首字母大写

 


 

VS2010快捷键

格式化:CTL+A,K,F

注释:CTL+K,C

取消注释:CTL+K,U

生成属性:CTL+R,E

 

 


C#和java语法差异

转自:https://www.cnblogs.com/caizl/p/9338343.html

    Java

C#

访问修饰符 public

修饰类、接口、变量、方法。

对所有类可见。

修饰类、接口、变量、方法。

对所有类可见。

  internal 无。

修饰类、接口、变量、方法。

类,接口的缺省访问修饰符。

同一个程序集的对象可见。

  protected 子类可见。 子类可见。
  private 类内部可见。

变量,方法的缺省访问修饰符

类内部可见。

  default 

类、接口、变量、方法的缺省修饰符。

同一包内可见。

无。
基本类型  

基本类型,无方法可调用。

作为局部变量时,储存与栈。作为字段时,跟随于实例。

值类型,继承object,具有ToString()等方法。

作为局部变量时,储存与栈。作为字段时,跟随于实例。

   布尔值  boolean  bool
   整形  short,int,long  short,int,long
   浮点数  float,double  float,double
 可空基本类型    例如:Integer是引用类型,Integer是int的包装类。  例如: int?其实是Nullable的语法糖,而Nullable依然是值类型。
   布尔值  Boolean  bool?
   整形 Short,Integer,Long  short?,int?,long?
   浮点数  Float,Double  float?,double?
   高精度数值类型  BigDecimal  decimal?
 源文件组织  导入  使用包的概念,关键字import导入 使用命名空间的概念,关键字using导入
   类文件

源文件名要和Public类名保持一致,

最多存在一个Public修饰的类,

文件名后缀是.java

没有java中的限制,

文件名后缀是.cs

 枚举  枚举

关键字enum,

引用类型,

和class差不多,可以有字段和方法,

可以添加私有构造函数

关键字enum,

值类型,

默认继承int,可以继承其他值类型

 常量 常量   关键字final修饰变量,字段,定义时赋值

 关键字const修饰变量,字段,定义时赋值

关键字readonly修饰,可以在构造函数中赋值

 密封  密封  关键字final修饰方法,类,表示不可继承,不可重写  关键字sealed修饰方法,类,表示不可继承,不可重写
 属性 属性

 只有字段概念,

一般情况下是要定义字段XX,方法getXX()和setXX()

 

 C#引入属性概念,简化了操作,

只需要定义XX{get;set;}

 判断类型  判断类型  Instanceof               is
 锁  锁  Synchronized      Lock 
 接口  接口

关键字 implements,

使用注解@Override

和继承类一样,使用符号:

实现类中的方法,不需要使用override关键字,

一般命名需要用大写字母I开头

抽象类

abstract

使用注解@Override

abstract,

重写方法需要使用override关键字

  分部类

partial

可以将分布在不同文件,而在相同命名空间下,相同名称并用partial标识的类合并,多用于wpf,winform框架上。

  匿名类

如Runnable hello = new Runnable() { public void run() { System.out.println("hello"); };

简化了定义子类的步骤。

无。类似的场景基本都是用委托的

  内部类

在new的使用上,内部类要和外部类关联起来

在new的使用上,内部类和外部类用法无区别

匿名方法 匿名方法

无。

使用delegate声明匿名方法,

   delegate(int x)

   {

   Console.WriteLine("Anonymous Method: {0}", x);

  };

虚拟方法 虚拟方法

默认都是虚拟方法

virtual标识虚拟方法,子类用override重写

静态 静态类 使用关键字static

使用关键字static,

可以有静态构造函数,

 

传参 引用传递

在方法参数加上ref,out,使参数按引用传递

即方法内改变参数的值,也会影响到方法外的值

  不定长参数
如int...
如params int[]
 流程控制  循环

关键字for有两种用法

for(初始化; 布尔表达式; 更新)

{

//代码语句

}

for(声明语句 : 表达式) {

//代码句子

}

 分别为for和foreach

for(初始化; 布尔表达式; 更新)

{

//代码语句

}

foreach (声明语句  in 表达式)
{
//代码句子
}

 字符  字符

String,引用类型,

需要使用方法equals比较是否相等

 string,引用类型,

但用法和值类型类似,可以直接用==比较是否相等,

实现原理就是微软重载了string的==运算符

 

 委托  委托  无。

使用关键字Delegate声明,是存有对某个方法的引用的一种引用类型。

使用+使用委托的多播。

 泛型  泛型

 声明泛型,

T只能是引用类型,

可以用extends和super限制T的类型,

> 表示通配,

实际上是假泛型。

 声明泛型,

T可以是引用类型也可以是值类型

使用:表示泛型约束,如T:new()表示T必须要有无参构造函数,

真正的泛型。

 注解与特性   注解与特性

 使用@声明注解,如

@Service
public class AgreementFacadeClientImpl implements AgreementFacadeClient {
....
}

 C#引入attribute作为特性,如

[Export(typeof(IPayModule))]
[Export(typeof(IModule))]
public class PayModule : IModule, IPayModule

{

......

}

索引器 索引器 无。 定义了索引器,就可以使用[]取值。
运算符重载 运算符重载 无。 可以对+,-,==等内置的运行符重载,string的==比较符就是运算符重载的结果。
 集合  列表  List是接口,ArrayList才是实现类  IList是接口,List是实现类
   字典  Map  Dictionary
  集合处理

流式api,

对象.stream().filter(x->x.getCount()>0).collect(Collectors.toList())

Linq

对象.Where(x=>x.Count>0).ToList()

使用上方便很多

lambda lambda

()->{},

入参类型为函数式接口,

实质上lambda表达式会在编译阶段被转换为匿名内部类

()=>{},

入参类型为委托delegate

  方法引用
类::实例方法
类::静态方法
对象::实例方法

 类.方法

扩展方法 扩展方法
无。要实现类似功能,要编写Util类。
 扩展方法是定义在静态类的静态方法,入参中的this代表使用的对象,是单继承的一种补充。
命名规范 命名规范

接口命名和类命名一样,如Module。

私有字段小写字母开头,如test。

方法命名是小写字母开头,如getSomeThing()

接口命名开头要加大写字母I,如IModule。

私有字段开头要加_,如_test。

方法命名都是单词首字母大写,如GetSomeThing()

 


.Net 6.0新语法

原文地址:https://www.cnblogs.com/yuanshuo/p/12010347.html

1、nameof表达式。Nameof表达式可以直接返回对象定义的名称,比如参数、枚举、变量、

控件、属性等。可以大大减少硬编码的使用,提高程序灵活性。

new GridColumn() { Caption = "工号", Field = nameof(Employee.EeJobno), DataType = typeof(string), Visible = true, Width = 100 },

 

2、字符串嵌入值($)。

MsgBox.Show(string.Format("查询所有模块失败:{0}",result.Message));

 

替换为

技术图片
MsgBox.Show($"查询所有模块失败:{result.Message}");

 

public string FullName

   {

       get

       {

           return string.Format("{0} {1}", FirstName, LastName);

       }

   }
技术图片

 

替换为

public string FullName => $"{FirstName} {LastName}";

 

3、Null 条件运算符

Null 值使代码变得复杂。 需要检查变量的每个访问,以确保没有取消对 null 的引用。Null 条件运算符使这些检查更轻松、更流畅。只需将成员访问.替换为 ?.。常用方式为属性、字段、方法等。可以简化一些空条件的判断

比如:

Queryed?.Invoke(this, list);

 

C#+VS开发PC端应用

标签:内部类   led   语法糖   ado   Collector   失败   main方法   att   protect   

原文地址:https://www.cnblogs.com/real-bert/p/12718024.html


评论


亲,登录后才可以留言!