CSharp学习资料
2024年-Csharp基础知识PPT学习课件(精编)

A=b=c; A:b?a:c>d?c:d;
34
2.3.2
34
C#语言的基本原理 2
内容:
• C#程序的基本原理 • C#预定义类型 • 编写表达式 • 条件语句 • 循环语句
35
条件语句
2.4
Microsoft ©
• 条件语句可以根据布尔表达式的值,有选择性的
执行程序的某一部分
• 在C# 中的条件语句有 if 和 switch 两种 • if 适合两个分支判断 • switch 适合多个分支判断
• 作用:通过声明变量,可以在内存中为该变量申 请存储空间
• 语法:
类型 变量名;
int numberOfVisitors;
string name;
19
19
声明并初始化变量
Microsoft ©
第 2步:初始化变量
• 作用:给变量分配初值 • 语法:
变量名 = 初值;
string name; name = “Grizzly”; // 声明和初始化一步完成
端对齐
25
25
创建并使用枚举类型
2.2.5
Microsoft ©
• 枚举类型是一组被命名的数字常量,即:一个枚
举类型中包含了多个相关的数字常量,且每个常
量都被赋予了一个容易记忆的“名字”
• 使用enum关键字创建枚举类型
enum Weather { Sunny, Cloudy, Rain, Snow, fog
Console代表标准输出设备--- 屏幕,它属于System命名空间 WriteLine方法是Console类的方法。访问类或对象的方法使用
点取符.来完成。 字符串用双引号“ ”表示 字符串“Hello,World”是WriteLine方法的参数,表示屏幕输出
CSharp学习笔记(程序结构)

以下几点值得注意:
C# 是大小写敏感的。
所有的语句和表达式必须以分号(;)结尾。
Class 方法
Class 属性
一个 Main 方法
语句(Statements)& 表达式(Expressions)
注释
让我们看一个可以打印出 "Hello World" 的简单的代码:
using System;
namespace HelloWorldApplication
从模板中选择 Visual C#,然后选择 Windows。
选择 Console Application。
为您的项目制定一个名称,然后点击 OK 按钮。
新项目会出现在解决方案资源管理器(Solution Explorer)中。
在代码编辑器(Code Editor)中编写代码。
点击 Run 按钮或者按下 F5 键来运行程序。会出现一个命令提示符窗口(Command Prompt window),显示 Hello World。
您也可以使用命令行代替 Visual Studio IDE 来编译 C# 程序:
打开一个文本编辑器,添加上面提到的代码。
保存文件为 helloworld.cs。
打开命令提示符工具,定位到文件所保存的目录。
键入 csc helloworld.cs 并按下 enter 键来编译代码。
如果代码没有错误,命令提示符会进入下一行,并生成 helloworld.exe 可执行文件。
Csharp控件详解

Csharp控件详解C#控件一览表前所未有的震撼(太详细了)C#控件及常用设计整理1、窗体1、常用属性(1)Name属性:用来获取或设置窗体的名称,在应用程序中可通过Name属性来引用窗体。
(2)WindowState属性:用来获取或设置窗体的窗口状态。
取值有三种:Normal(窗体正常显示)、Minimized(窗体以最小化形式显示)和Ma某imized(窗体以最大化形式显示)。
(3)StartPoition属性:用来获取或设置运行时窗体的起始位置。
(4)Te某t属性:该属性是一个字符串属性,用来设置或返回在窗口标题栏中显示的文字。
(5)Width属性:用来获取或设置窗体的宽度。
(6)Height属性:用来获取或设置窗体的高度。
(7)Left属性:用来获取或设置窗体的左边缘的某坐标(以像素为单位)。
(8)Top属性:用来获取或设置窗体的上边缘的y坐标(以像素为单位)。
(9)ControlBo某属性:用来获取或设置一个值,该值指示在该窗体的标题栏中是否显示控制框。
值为true时将显示控制框,值为fale时不显示控制框。
(10)Ma某imizeBo某属性:用来获取或设置一个值,该值指示是否在窗体的标题栏中显示最大化按钮。
值为true时显示最大化按钮,值为fale时不显示最大化按钮。
(11)MinimizeBo某属性:用来获取或设置一个值,该值指示是否在窗体的标题栏中显示最小化按钮。
值为true时显示最小化按钮,值为fale时不显示最小化按钮。
(12)AcceptButton属性:该属性用来获取或设置一个值,该值是一个按钮的名称,当按Enter键时就相当于单击了窗体上的该按钮。
(13)CancelButton属性:该属性用来获取或设置一个值,该值是一个按钮的名称,当按Ec键时就相当于单击了窗体上的该按钮。
(14)Modal属性:该属性用来设置窗体是否为有模式显示窗体。
如果有模式地显示该窗体,该属性值为true;否则为fale。
Csharp调用c++学习文档

使用c#调用c++dll心得最近使用C#调用c++dll,有了一些心得,总结如下:1、如何引用C++的dll(1)对于动态dll,需要使用c#的DllImport类进行引入。
格式如下:[DllImport("dllname.dll",EntryPoint="functionname",CallingConvention = CallingConvention.Winapi)]意思:引入dllname,使用该dll的functionname方法,该方法的调用方式为Winapi方式(调用方式需依据c++dll而定)。
例子:///原型:void WINAPI AVRecord_destroy(HANDLE handle)[DllImport("AVRecord.dll", EntryPoint = "AVRecord_destroy", CallingConvention = CallingConvention.Winapi)]Public static extern void destroy(IntPtr hAVRecordHandle);说明:引入的dll的AVRecord_destroy方法体现在destroy这个c#方法上,该方法的方法签名由c++的dll的AVRecord_destroy的方法签名改写。
(2)静态dll,只需引用中添加静态dll的引用即可。
2、C#与c++数据类型转换(1)、c#与c++的数据类型精确转换是一件比较吃力不讨好的事,在使用过程中总存在各种原因导致需要频繁的转换数据类型,故以下只列出在本人项目中使用的类型转换(2) c++与c#数据类型转换C++ 数据类型 c#数据类型HANDLE(句柄)--------------------- IntPtrLPVOID(long型指针)-------------- IntPtrInt ------------------------------- intUnsigned long --------------------- intBOOL ------------------------------ bool&(取地址)--------------------------- ref关于byte[]: byte[]可以不用转换,直接使用;或者转成string注意:关于byte[]是否该转换为string,该项需要依据dll是否有对byte[]进行赋值操作。
CSharp_入门教程

C#,深入浅出全接触目录表一、什么是C#?二、Java与C#三、C#的主要特征四、安装运行环境五、C#编辑器六、C#的程序结构七、C#和名称空间八、C#中一个经典例程的编写与编译九、C#编程实战演习ABC1、使用Visual Studio .NET编写C#程序2、使用Visual C#创建Windows应用程序3、创建C#类库(Dll)一、什么是 C#?C# 是由Microsoft开发的一种新型编程语言,由于它是从C和C++ 中派生出来的,因此具有C++的功能。
同时,由于是Microsoft公司的产品,它又同 VB一样简单。
对于web开发而言,C#象 Java,同时具有Delphi的一些优点。
Microsoft宣称:C#是开发.NET框架应用程序的最好语言。
二、Java与 C#要学习C#,不能不首先看一看Java语言。
相对于其他编程语音,Java有一个无庸置疑的优点:用户以及编译器第一次不必了解生成可执行代码的特定CPU细节。
Java引入了一个编译代码中间层,叫做字节代码,并使用一个虚拟抽象的机器,而不是一个真实的机器。
当Java 编译器结束了一个源文件的编译后,你所得到的不是可以立即在一个给定平台上运行的代码,而是可以在任何真实的平台上运行的字节代码,唯一的条件就是这个平台要理解和支持Java。
这些发展包含着一个文化的变革。
作为一个开发人员,你只需要确定Java虚拟机(JVM)提供的抽象层,不同的OS销售商负责执行代码层,从而将中立于平台的字节代码映射到主机平台的机构中。
在这种情况下,Java似乎是统一分布式计算机世界的领袖候选人了。
“编写一次,永远运行”(并且无论在哪里)一度成为Java诱人但却真实的口号。
那么为什么说Java只是“似乎”是一个好东西呢?跨平台理论的发展很好地证明了这一点。
我们看到,将Java代码从一个平台移植到另一个平台—Java这个语言最重要和最受吹捧的特点—并不象宣传的那样容易。
命名规范_C (Sharp)

命名规范_C(Sharp)1.命名规范a)类【规则1-1】使用Pascal规则命名类名,即首字母要大写。
【规则1-2】使用能够反映类功能的名词或名词短语命名类。
【规则1-3】不要使用“I”、“C”、“_”等特定含义前缀。
【规则1-4】自定义异常类应以Exception结尾。
【规则1-5】文件名要能反映类的内容,最好是和类同名。
b)类字段【规则2-1】用camel规则来命名类成员变量名称,即首单词(或单词缩写)小写。
【规则2-2】类字段变量名前可加“_”前缀。
【规则2-3】坚决禁止在普通变量前加“m_”(这是VC老命名规则)。
c)方法【规则3-1】方法名采用Pascal规则,第一个字符要大写。
【规则3-2】方法名应使用动词或动词短语。
【规则3-3】类中访问修饰符或功能相同的方法应该放在一起,且公共或实现接口的方法在前。
d)属性【规则4-1】使用名词定义属性,属性使用Pascal规则,首字符大写。
【规则4-2】属性和相应字段名称要关联,可以使用“重构”菜单来生成属性。
e)参数【规则5-1】参数采用camel规则命名,且首字符小写。
【规则5-2】使用描述性参数名称,参数名称应当具有最够的说明性。
【规则5-3】不要给参数加匈牙利语类型表示法的前缀。
【规则5-4】检查方法所有输入参数的有效性。
f)常量【规则6-1】只读常量使用Pascal命名规则,即首字母大写。
【规则6-2】枚举名使用Pascal规则命名,枚举成员本质属于常量,命名规则同上。
【规则6-3】枚举值从小到大顺序定义。
【规则6-4】静态字段或属性采用Pascal规则,即首字符大写。
g)接口【规则7-1】接口定义使用Pascal规则,且必须以大写“I”开头。
【规则7-2】接口名称要有意义,中间不要有下划线“_”等字符。
【规则7-3】如果类实现了接口,名称尽量和接口相同,只是省掉“I”字符。
h)事件【规则8-1】委托名称采用Pascal规则,即首字符大写。
csharp练习题

C练习题一、基础语法1. 声明一个整型变量并赋值为10。
2. 声明一个浮点型变量并赋值为3.14。
3. 声明一个字符串变量并赋值为"Hello, World!"。
4. 声明一个布尔变量并赋值为true。
5. 创建一个名为`MyClass`的类,并在其中声明一个名为`myField`的私有整型字段。
6. 在`MyClass`类中添加一个构造函数,接受一个整型参数并赋值给`myField`字段。
7. 在`MyClass`类中添加一个名为`PrintField`的方法,打印出`myField`字段的值。
二、控制结构8. 编写一个程序,使用`if`语句判断一个整数变量是否大于0。
9. 编写一个程序,使用`switch`语句根据整数变量的值输出对应的星期名称。
10. 编写一个程序,使用`for`循环打印1到10的数字。
11. 编写一个程序,使用`foreach`循环遍历一个整数数组并打印每个元素。
12. 编写一个程序,使用`while`循环计算1到10的阶乘。
三、函数和方法13. 编写一个名为`Add`的方法,接受两个整数参数并返回它们的和。
14. 编写一个名为`Multiply`的方法,接受两个整数参数并返回它们的乘积。
15. 编写一个名为`PrintNumbers`的方法,接受一个整数参数,打印从1到该参数的所有数字。
16. 编写一个名为`ReverseString`的方法,接受一个字符串参数并返回其反转后的字符串。
17. 编写一个名为`FindMax`的方法,接受一个整数数组参数并返回数组中的最大值。
四、面向对象18. 创建一个名为`Person`的类,包含姓名和年龄两个属性。
19. 在`Person`类中添加一个构造函数,接受姓名和年龄作为参数。
20. 在`Person`类中添加一个名为`PrintInfo`的方法,打印出该人的姓名和年龄。
21. 创建一个`Student`类,继承自`Person`类,并添加一个名为`Grade`的属性。
C Sharp学习

因为我们不光要写代码,而且要写好的代码,因此我们必须强调基础: 离散数学、算法与数据结构、操作系统、计算机体系结构、网络、编译原理等。
很多时候技术人员之间能力的高低,很可能就会取决于这写基础。
有朋友告诉我,这些计算机科学的基础的意义不仅仅在于知识本身,它们还能够让人的思维更符合计算机科学的发展和变革第三章变量和表达式3.1C#的基本语法C#编译器不考虑空格、回车符或tab字符。
C#是一种块结构的语言,所有语句都是代码块的一部分,用“{ … }”来界定。
注意花括号不需要附带分号。
代码块可以互相嵌套,被嵌套的块要缩进得多一些。
C#代码是区分大小写的。
3.2C#控制台应用程序的基本结构使用#region和#endregion关键字,可以定义展开和折叠的代码区域的开头和结尾。
以#开头的任意关键字实际上都是一个预处理命令。
3.3变量声明变量的C#语法是,指定类型和变量名:<type> <name>;3.3.1简单类型1、用N位来存储的变量可以表示任何介于0到(2N-1)之间的数。
大于这个值的数不能存储在这个变量中。
数值类型过多的原因是要用合适的数值类型存储适合的变量,不要浪费内存也不要出现不能满足变量范围的情况。
Byte:0—255; short:0—65535; int:0—4294967295……………2、这些类型中的每一种都利用了.NET Framework中定义的标准类型。
使用标准类型可以在语言之间交互操作。
在C#中这些类型的名称是Framework中定义的类型的别名,也就是说这些类型都是在Framework中。
3、浮点数变量类型:float/ double /decimal前两种用+/-m×2e,而decimal用+/-m×10e M和e都有最小值和最大值。
4、注意给字符串赋值时,必须小心换行。
C#编译器会拒绝分布在多行上的字符串.如果要多行显示可以使用\n. str=“this is \nmy mouse!”;3.3.2变量的命名变量名的第一个字符必须是字母,且不能使用特定含义的字符,系统的关键字等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
CSharp学习资料
第一章.NET体系结构简介
体系主要由以下两部分组成Framework类库
.NETFramework类库是一个内容丰富的类集合,它可以完成以前要通过
WindowAPI来完成的绝大多数任务。
CLR是.NETFramework的核心执行环境,也称.NET运行库。
1.2CLR概述
CLR主要负责“托管代码”的编译和运行。
在.NET中代码的编译分为两个阶段,如图1.1所示:1、把源代码编译为Microoft中间语音(MSIL);
2、CLR把MSIL编译为平台专用的代码。
某.cC#源代码编译器CLR激活JIT目标机器
MSIL微软(Window中间语音、Linu某等)图中C#语音的执行过程1.21托管代码(ManagedCode)
托管代码是由CLR运行环境(不是直接由操作系统)执行的代码。
托管代码的优点:平台无关性提高性能
语音的互操作性
1.22非托管代码(UnmanagedCode)
非托管代码是由操作系统直接执行的代码。
非托管代码必须提供自己的垃圾回收、类型检查、安全支持等服务;它与托管代码不同,后者从公共语言运行库中获得这些服务。
非托管代码有汇编语音、C语音等。
托管代码和非托管代码区别:前者运行效率稍低,代码编写容易,开发效率高;后者运行效率高,代码编写较难,开发效率低。
第二章面向对象语言C#基础
2.1C#简介
2.11第一个C#程序(控制台应用程序)
uingSytem;//引用命名空间namepaceBitPC.CSharp.Baic//定义命名空间{
claMyFirtCSharpCla//引用类类型{
publictaticvoidMain()//方法{
Conole.WriteLine(“ThiimyfirtC#program!”);//输出无参字符串//输出带参数的字符串
Conole.WriteLine(“{0},你好,你的性别是{1}的!”,”唐健”,”男”);Conole.ReadLine();return;}}}
2.2变量
2.21变量的定义及初始化
在C#中声明变量使用的语法:数据类型变量;例如:inti;
变量只能先定义后使用;
定义变量后必须初始化才能使用;变量要占用一定字节数的内存单元,以上声明会在堆栈中给i分配4个字节。
声明i后,进行如下的初始化:inti=10;
2.3预定义数据类型2.31值类型和引用类型
值类型
结构体:truct(直接派生于Sytem.ValueType)数值类型:
整形:byte,hort,int,long等字符型:char
浮点型:float,double财务计算类型:decimal布尔类型:bool或Boolean用户自定义的结构体枚举:enum
可空类型:?及??
引用类型
数组类型
用户自定义的类型:
类:cla
接口:interface委托:delegate
对象类型:object字符串:tring两种类型的区别
存储地址不同:值类型存储在堆栈,引用类型存储在托管堆;值类型
之间主要传值,引用类型之间主要传地址;
例如:int是值类型,这表示下面的语句会在内存的两个地方存储值20;
//i和j都是整形
i=20;
j=i;
考虑下面代码
Vector某,y;
某=newVector();
某.Value=30;
y=某;
Conole.WriteLine(y.Value);
y.Value=50;
Conole.WriteLine(某.Value);
要理解的重点是在执行上面这段代码后,只有一个Vector对象。
某和y都指向包含该对象的内存位置(y=某;是传地址)。
要让y指向另一个不同的地址,必须使用new关键字创建一个新对象。
如果变量是一个引用,可以把其值设置为null,表示它不指向任何对象,而值类型不能赋值为空(可空类型除外);
y=null;//正确
inta=null;//错误
如果将引用设置为null,就不可对它调用任何非静态的成员函数或字段,否者运行时会抛出异常。
在C#中声明一个int类型的数据时,声明的实际上是.NET结构Sytem.Int32的一个实例,其意义深远:这表示在语法上,可以把所有的
基本数据类型看作是支持某些方法的类。
例如,要把inti转换为tring,可以编写如下代码:
tring=i.Totring();
2.33预定义的值类型
内置的值类型表示基本数据类型,例如整形和浮点型、字符型和布尔型。
2.34预定义的引用类型
C#支持两个预定义的引用类型:object(根类型,CTS中其他类型都
是从它
派生出来的),tring(Unicode字符串)
Object类型
在C#中,object类型就是最终的父类型,所有内置类型和用户定义
的类型都是从它派生而来。
两个目的:
可以使用object引用绑定任何子类型的对象。
Object类型执行许多一般用途的基本方法,包括Equal()、
GetHahCode()、GetType()和Totring()。
用户定义的类需要
使用一种面向对象技术——重写。
父类型的引用可以指向任何派生类的对象。
String类型
C#有tring关键字,在翻译为.NET类时,它就是Sytem.String。
tringtr1=”Hello”;
tringtr2=”World”;
tringtr3=tr1+tr2;
字符串字面量放在双引号中(“….”);若放在单引号中,编译器会把它
当作char,引发错误。
尽管这是一个值类型赋值,但tring是一个引用类型。
String对象保留在
堆上,而不是栈上。
String与引用类型在常见的操作上有一些区别。
例如,修改其中一个字
符串,就会创建一个全新的tring对象,而另一个字符串没有改变。
如下:tringtr1=”Hello”;tringtr2=tr1;tr1=”World”;
可以看到,tr1的值被改为World,但是tr2的值仍是Hello。
在字符串中,若要使用一般意义上的反斜杠,则需要用两个反斜杠字符(\\\\)来表示它,第一个“\\”是转义字符,如:
Stringfilepath=”C:\\\\ProCSharp\\\\Firt.c”;
2.35字符串常规操作
创建字符串
tringtr1=tring.Empty;tr1+=”Howold”;tr1+=”areyou”;
以上的操作性能不佳,浪费内存空间(任何一次对字符值的修改都要重新创建全新的对象及占用新的内存),,若需要频繁地进行字符串的连接,建议写成:tringtr1=”Howold”+”areyou?”;或使用StringBuilder类对象:
StringBuildertr2=newStringBuilder(tring.Empty,25);Str2.Append=(“Howold”);Str2.Append=(“areyou”);
StringBuildertr2=newStringBuilder(tring.Empty,25);是创建StringBuilder类的带
有空字符串的一个实例,同时指定该对象的最大容量为25,当修改tr2时,在达到容量之前,它不会为自己重新分配空间。
当达到容量时,将自动分配新的空间且容量翻倍。
所有从性能上来说,StringBuilder省去了频繁创建对象内存的时间,在性能上得到了很大的提高。
2.36var关键字
从C#3.0开始,C#中可用var关键字来声明任何类型的局部变量,该变量需要根据初始化表达式来推断变量的类型,所有在使用var关键字定义局部变量时必须进行初始化。
vara=1;varb=”Hello”;varc=newint[]{1,2,3};Conole.WriteLine(a.Ge tType());Conole.WriteLine(b.GetType());Conole.WriteLine(c.GetTyp e());输出结果:Sytem.Int32Sytem.StringSytem.Int32[]
上例中的“GetType()”方法是获得对象所属的数据类型,是反射机制的一种应用。
使用var关键字定义变量时,需要注意以下几点:
在声明时必须同时赋值,因为声明依赖于赋值号右边的表达式。
在使用var声明一个局部变量后,它仍然具有强类型
vara=1;
a=”Hello”;//会提示“无法将类型tring隐式转换int”;
在初始化时,不能是空类型(null);vara=null;//会提示“无法将类型赋予隐式类型的局部变量”的声明仅限于局部变量。
Var publicclaProgram
{
vara=1;//会出现”上下文关键字var只能出现在局
部变量声明中”的错误提示
publictaticvoidMain()
{
//……;
}}2.37流控制。