电气工程师:现场设备间接接线安装,调试,经常出差
上位机工程师:主要设计项目,写程序
2,熟悉一门数据库
3,熟悉掌握各种常用的通信协议
4,自定义控件的开发技术(UI设计)
5,掌握上位机数据采集,通信控制,数据存储,数据报表,和分析等
项目类型: 控制台,类库,windows,wpf,asp.net
项目框架:.net framework
Debug:调试 F11逐句
在设置好断点后,调试程序可以直接按 F5 键,或者直接在菜单栏中选择“调试”→“开始调试”命令。
在调试程序的过程中,可以直接使用工具栏上的调试快捷键,如下图所示,或者直接在菜单栏中选择所需的调试命令。
下面介绍常用的调试命令。
Release:发布
项目生成和运行过程分析
c#代码文件—》编译器csc.exe 程序集exe或dll----》JIT编译器,编译成机器码–》x86机器码 —》操作系统
c#可以和其他语言一起运行
命名空间和类库:一个命名空间可以包含多个类,一般用一个
先引用后引入再使用
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NglYo5j2-1627303566067)(C:\Users\35661\AppData\Roaming\Typora\typora-user-images\image-20210710090655789.png)]
业务代码必须放到方法中,
c#常用数据类型
数值和非数值:数值(int,double),非数值(string,bool,Data Time)
变量的概念:表示一个数据存储空间,内存地址的别名
static void Main(sring[] args){
test();
Console.ReadLine();//获取当前用户输入的数据,获取的都是字符串类型
}
Console.WriteLine(“科目”+subject+”分数:“+score) 自动输出换行
Console.Write("")输出不换行
ctrl +k+d 快速格式化
代码折叠:#region +注释 #endregion
object是万能数据类型 (int)(double)a 自动类型转换需要都是同一种数据类型才能转换。
显式类型转换
方法 | 描述 |
---|---|
ToBoolean | 如果可能的话,把类型转换为布尔型。 |
ToByte | 把类型转换为字节类型。 |
ToChar | 如果可能的话,把类型转换为单个 Unicode 字符类型。 |
ToDateTime | 把类型(整数或字符串类型)转换为 日期-时间 结构。 |
ToDecimal | 把浮点型或整数类型转换为十进制类型。 |
ToDouble | 把类型转换为双精度浮点型。 |
ToInt16 | 把类型转换为 16 位整数类型。 |
ToInt32 | 把类型转换为 32 位整数类型。 |
ToInt64 | 把类型转换为 64 位整数类型。 |
ToSbyte | 把类型转换为有符号字节类型。 |
ToSingle | 把类型转换为小浮点数类型。 |
ToString | 把类型转换为字符串类型。 |
ToType | 把类型转换为指定类型。 |
ToUInt16 | 把类型转换为 16 位无符号整数类型。 |
ToUInt32 | 把类型转换为 32 位无符号整数类型。 |
ToUInt64 | 把类型转换为 64 位无符号整数类型。 |
强制类型转换:字符串和值类型之间
方法:目标类型 变量 = 目标类型.Parse(“字符串的有效表示”)
// 只有有效的字符类型,才能转换成对应的值类型。有效的:也就是说字符串内容必须符合目标类型。
double a= double.Parse(“100.5”);(parse只适合字符串到值类型)
float b = float.Parse(“20.25”);
int c = int.Parse(“500”)
int d = int.parse(“10.1”)错误
值类型默认的值为0;
int b = (int)double.Parse(“199.3”)
string s1 = b.ToString*()
万能转换器Convert 适合所有类型转换
float a = Convert.ToSingle(“19.19”);
double b = Convert.ToString(“19.1”);
int c = Convert.ToInt32("")
int d = (int)Convert.ToDouble(“19.11”);
运算符中的三目运算符
continue 与break
continue 退出当前循环,开始下一次新的循环,,只能用于循环
break 退出整个循环。
找下表:IndexOf("@") 未找到为-1
截取:Substring(开始,结束); email.Substring(0, email.IndexOf("@"))
email.Substring(email.IndexOf("@")+1) 获取后缀
长度:Length
相等:name1.Equals(name2)//Equals区分大小写,为Boolean
空字符串:string name1 = ”“;string name2 = string.Empty
去空格:Trim()
全部转为小写:ToLower()
全部转为大写:ToUpper()
LastIndexOf(".")
分割:Split() string[] dataArray = data.Spilit()
重新组合:Join string newData = string.Join("-",dataArray)
StringBuilder字符串高效处理:(对象)
StringBuilder builder1 = new StringBuilder(“默认值”);
builder1 .Append("ab”)//追加
builder1 .Clear()’
builder1 .AppendFormat(“主讲老师:{0}课程周期:{1}”,teacher,month)
builder1 .Insert(0,”中国的“);插入
bulider1.Insert(builder1.ToString().Length,“大家要努力”)
builder1.Delete(index)
ps:1.属性首字母要大写
2.报错:下面整个会出现错误:System.NullReferenceException:“未将对象引用设置到对象的实例”
string 其实是String的一个别名,在使用是需要实例化,如果是null则没有办法调用方法和属性
数组是一个对象类型
string[] arr = new String[]{”1“,”2“};
foreach(int score in score1){
sumScore = score;
}// 不考虑循环次数情况下可以使用foreach
avgScore = sumScore/score1.Length;
报错:索引超出数组界限==》索引超出最大索引值
int[] netScore1 = new int[3]{90,56,78};
int myscore = newtScore1[3];
初始长度跟使用长度不一致
ps:大写是底层的,小写是c#关键字
1,初始化要赋值
2,常量都要大写
const double API = 1.1;
星期枚举
定义到累的外面
public enum Gender{
Male:1,
Female:0,
}
引用:Gender gender = Gender.Female;
int a = (int)gender;
调试逻辑错误:能运行但是没有得到结果
1,直观法:一眼就看出来
2,打断点:预估程序可能在哪里出现问题。或者在程序入口处
按f11,逐句输出
两个断点之间不想再逐行调试可以按f5直接跳过
在方法前后打两个断点会单独测试该方法
F10,可以直接跳过某个方法的调用。
F11, 如果遇到方法调用,会进入方法内部逐条
calss User
{
public User(string name,string password,string tel){
this.Name = name;
this.Password = password;
this.Tel = tel;
}
public string Name{get;set;}
public sting Password{get;set;}
public sting Tel{get;set;}
public void PrintMsg(){
Console.writeLine("用户名:"+ this.Name);
Console.WriteLine("密码:"+this.Password);
Console.WriteLine("手机号:"+this.Tel);
}
}
在main方法中调用方法的代码如下:
class Program
{
static void Main(string[] args){
User user = new User("小明",“124”,“12121212”);
}
}
~User(){
Console.WriteLine("调用了析构方法");
}
class SumUtils
{
public int Sum(int a,int b)
{
return a + b;
}
public double Sum(double a,double b)
{
return a + b;
}
public string Sum(string a,string b)
{
return a + b;
}
public int Sum(int a)
{
int sum = 0;
for(int i = 1; i < a; i++)
{
sum += i;
}
return sum;
}
}
方法调用
class Program
{
static void Main(string[] args)
{
SumUtils s = new SumUtils();
//调用两个整数求和的方法
Console.WriteLine("两个整数的和为:" + s.Sum(3, 5));
//调用两个小数求和的方法
Console.WriteLine("两个小数的和为:" + s.Sum(3.2, 5.6));
//调用两个字符串连接的方法
Console.WriteLine("连个字符串的连接结果为:" + s.Sum("C#", "方法重载"));
//输出 1 到 10 的和
Console.WriteLine("1 到 10 的和为:" + s.Sum(10));
}
}
案例:
class OutClass
{
public void Judge(int num, out bool result)
{
if (num % 5 == 0)
{
result = true;
}
else
{
result = false;
}
}
}
在 Main 中调用该方法,代码如下。
class Program
{
static void Main(string[] args)
{
OutClass outClass = new OutClass();
bool rs;
outClass.Judge(20, out rs);
Console.WriteLine(rs);
}
}