C#基本语法
2021/4/25 1:25:17
本文主要是介绍C#基本语法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
文章目录
- 输出
- 为了避免闪退现象
- system命名空间
- 控制台输出
- console.write(),console.writeline()
- 使用索引输出,索引号必须从0开始不间断顺延
- 只能输出object数组,其他数组不可以
- 输出数组元素的指定位置
- 控制台输入
- ReadKey()方法
- Read()方法
- ReadLine()方法
- .NET Framework
- 基本语法
- 解决方案文件和项目文件以及类文件之间的关系
- 常量与变量
- 引用类型与值类型
- 常量与变量
- 值类型与引用类型的区别
- 数据类型
- object类型
- dynamic类型
- 装箱和拆箱
- 数据类型之间的转换
- 使用convert进行任意类的转换
- 日期和时间
- 全局唯一标识符
- 运算符
输出
Console.WriteLine("Hello C#");
为了避免闪退现象
第一种:
Console.ReadLine();
用户输入回车键关闭
第二种:
Console.ReadKey();
用户输入一个字符后关闭
system命名空间
using system类似于using namespace
c#中输入输出函数都包含在system的类,所以使用输入输出函数必须使用system 类。(对比c++中的iostream)
控制台输出
console.write(),console.writeline()
console.write(),console.writeline()都是system.console这个类的方法,都是用于输出。
两者区别在于:
console.writeline()有无参数都可,而且语句执行结束,光标移动到目前输出字符串的下一行。
console.write()至少有一个参数。语句结束光标在输出字符串的最后一个字符。
使用索引输出,索引号必须从0开始不间断顺延
string name = "李明"; int age = 18; char sex = '男'; Console.WriteLine("姓名:{0}\t性别:{1}\t年龄:{2}\t", name, sex, age);
只能输出object数组,其他数组不可以
Console.WriteLine("输出数组"); object[] i = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; Console.WriteLine("{0},{1},{2},{3},{4},{5},{6},{7},{8},{9}", i); Console.ReadLine();
输出数组元素的指定位置
Console.WriteLine("数组元素"); char[] c = { 'A', 'B', 'C', 'D', 'E', 'F', 'G' }; Console.WriteLine(c, 2, 4); Console.ReadLine();//从下标为2,一直输出到4,每次输出一个
控制台输入
ReadKey()方法
读取单个字符。
Read()方法
读取单个字符
ReadLine()方法
读取一串字符串
.NET Framework
.NET Framework是一套语言独立的应用程序开发框架,主要的特点在于简化应用程序的开发复杂性,提供一个一直的开发模型,可以选择任何支持.NET的编程语言进行应用程序开发。
.NET Framework主要有两个部分组成:CLR 公共语言运行库和.NET Framework类库
C#是面向.NET Framework的语言,除了C# ,F#也是一样的。.NET Framework 看做航空母舰,C#就是航空母舰上的飞机。
基本语法
using MK = System.Console;//命名空间的别名
MK.WriteLine("命名空间的别名");
解决方案文件和项目文件以及类文件之间的关系
vs创建一个项目后生成一个文件。文件包括后缀名为.sln的解决方案文件和
同名文件夹,解决方案文件又包括后缀名为.csproj的项目文件和后缀名为.cs的类文件,可以通过记事本打开的。
对于简单的变量,一般采用驼峰命名法。
常量与变量
字符常量的输出类似于:
Console.WriteLine('a');
注意对转义字符的输出。
对于字符串的输出:
第一种:加双引号,
第二种:在字符串前面加@表示取消字符串中的转义。也可以表示字符串可以分为多行书写。
例如:
Console.WriteLine(@"d:\root\subdir");
相当于
Console.WriteLine("C:\\root\\subdir");
如果要在@字符串中包含双引号,双倍添加即可
Console.WriteLine(@"""captain!""");
多行书写:
string str3 = @"<script type=""text/javascript""> <!-- --> </script>"; Console.WriteLine(str1); Console.WriteLine(str2); Console.WriteLine(str3);
定义一个常量如:
const double PI = 3.14159;
完整代码:
const double PI = 3.14159; double r; Console.WriteLine("请输入半径:"); r = Convert.ToDouble(Console.ReadLine());//将输入的字符串转换为数值 double s = PI * r * r; Console.WriteLine("半径为:{0}, 面积为: {1}\n", r, s); int num; num = Convert.ToInt32(Console.ReadLine());//将用户输入的数据转化为int数据类型
引用类型与值类型
//值类型 int a = 0; int b = a; b = 100; Console.WriteLine("a={0} b={1} ", a, b); //引用类型 A n1 = new A(); A n2 = n1; n2.num = 200; Console.WriteLine("n1={0} n2={1}", n1.num, n2.num);
结果如下:
a=0 b=100
n1=200 n2=200
所以对于引用类型两种变量可引用同一对象,对一个变量的操作会影响另外一个变量。
值类型就是一个包含实际数据的量。当定义一个值类型的变量时,c#会根据它所声明的类型,以栈方式分配一个大小相适应的存储区域给这个变量。
引用类型的变量不存储它们的实际数据,而是存储实际数据的引用。引用类型创建分两步走,首先在栈上创建一个引用变量,在堆上创建对象本身,然后将内存的句柄(首地址)赋给引用变量。
常量与变量
两者区别:变量就是在运行过程中发生变化的量,常量是不发生变化的量。
常量的优点:第一,易于阅读,增强可读性
第二,常量是静态的,不用声明为static类型
值类型与引用类型的区别
第一,值类型的数据存储在内存的栈中。引用类型中,堆中只是存储实际数据,栈中存储的是指向堆中数据的地址。
第二,值存取速度快,引用类型存取速度慢。
第三,值类型是一个实际数据,引用类型其实是一个地址。
第四,值类型集成自System.ValueType ,引用类型集成自system.object
第五,栈的内存分配是自动释放,而堆在.NET中会有垃圾回收来释放。
使用值类型和引用类型时,对内存有哪些影响?
在设计一个应用程序时,如果都是引用类型,那么应用程序的性能将显著下降,因为这会加大托管堆的压力,增加托管堆的压力。虽然值类型是一个轻量级,但是如果大量使用值类型,也会有损于应用程序的性能。
由于值类型实例的值是自己本身,所以将一个值类型的变量赋值另一个值类型的变量,会执行一次逐字段的复制。
引用类型实例的值是一个引用,将引用类型的变量赋值给另一个引用类型的变量时,只需要复制内存地址。
所以对对象进行赋值时要避免使用值类型
数据类型
值类型是抽象类型system.valuetype的直接派生类,system。valuetype 又是直接从system.objectp派生的
object类型
引用类型的关键字为object,可以将所有类型的值赋给object类型。但是在分配值之前,需要先进行类型转换。
object类型其实就是一个万能类型。
object name, age, sex, height; name = "周红"; age = 18; sex = '女'; height = 180; Console.WriteLine("姓名:{0}\t年龄: {1}\t身高: {2}\t性别: {3}\t",name,age,sex,height);
dynamic类型
装箱和拆箱
装箱拆箱是值类型和引用类型之间相互转换时要执行的操作。
装箱是值类型向引用类型转换时发生。
object obj=1;
常量是值类型,值类型是要放到栈上的。而object是引用类型,需要放在堆上。所以执行装箱操作不可避免地要在堆上申请内存空间。并且将堆栈上的值类型数据赋值到申请的堆内存空间上,这肯定要消耗内存和CPU。
拆箱是引用类型向值类型转换时发生。
object obj=5;//先执行装箱操作 int value=(int)obj;
拆箱操作与装箱操作与之相反。
数据类型之间的转换
使用convert进行任意类的转换
针对于两个变量不可兼容 比如string和int类型
1.数值型转换为字符型
int num = 10; string str = num.ToString(); Console.WriteLine(str);
2.字符串转换为数值型
int.parse()
double.parse()
float.parse()
注意parse的参数只能是字符串,并且只有表示成数字的字符串才能进行转换。
日期和时间
通过DateTime这个类来获取当前的时间
string dt = DateTime.Now.ToString(); Console.WriteLine("测试当前时间:{0}", dt); Console.WriteLine("{0}", DateTime.Now.ToString("d"));//短日期模式 Console.WriteLine("{0}", DateTime.Now.ToString("D"));//长日期模式 Console.WriteLine("{0}", DateTime.Now.ToString("f"));//长日期和短时间模式 Console.WriteLine("{0}", DateTime.Now.ToString("yyyy"));//四位年份 Console.WriteLine("{0}", DateTime.Now.ToString("MMMM"));//两位月份 Console.WriteLine("{0}", DateTime.Now.ToString("dd")); //日数 Console.ReadLine();
上面只是举几个例子,不是很全面。
全局唯一标识符
GUID主要的目的是产生完全唯一的数字,唯一缺陷在于生成的结果串会比较大。
通过使用NewGuid方法,生成GUID
运算符
-
^ 位逻辑异或运算:相同为0,相异为1
-
为逻辑非运算
sizeof():用于获取值类型的字节大小,仅仅适用于值类型,不适合于引用类型。
typeof():将类型的信息当做字符串返回。
int size = sizeof(int); Console.WriteLine(size); Console.WriteLine("char类型的对象 {0}", typeof(char));
输出结果为:4
char类型的对象 System.Char
is as运算符
as运算符主要用于在兼容的引用类型之间执行转换。
Console.ReadLine();//用于接收用户的输入,输入类型默认为string
这篇关于C#基本语法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2022-03-01沐雪多租宝商城源码从.NetCore3.1升级到.Net6的步骤
- 2024-12-06使用Microsoft.Extensions.AI在.NET中生成嵌入向量
- 2024-11-18微软研究:RAG系统的四个层次提升理解与回答能力
- 2024-11-15C#中怎么从PEM格式的证书中提取公钥?-icode9专业技术文章分享
- 2024-11-14云架构设计——如何用diagrams.net绘制专业的AWS架构图?
- 2024-05-08首个适配Visual Studio平台的国产智能编程助手CodeGeeX正式上线!C#程序员必备效率神器!
- 2024-03-30C#设计模式之十六迭代器模式(Iterator Pattern)【行为型】
- 2024-03-29c# datetime tryparse
- 2024-02-21list find index c#
- 2024-01-24convert toint32 c#