Console.WriteLine("Hello C#");
第一种:
Console.ReadLine();
用户输入回车键关闭
第二种:
Console.ReadKey();
用户输入一个字符后关闭
using system类似于using namespace
c#中输入输出函数都包含在system的类,所以使用输入输出函数必须使用system 类。(对比c++中的iostream)
console.write(),console.writeline()都是system.console这个类的方法,都是用于输出。
两者区别在于:
console.writeline()有无参数都可,而且语句执行结束,光标移动到目前输出字符串的下一行。
console.write()至少有一个参数。语句结束光标在输出字符串的最后一个字符。
string name = "李明"; int age = 18; char sex = '男'; Console.WriteLine("姓名:{0}\t性别:{1}\t年龄:{2}\t", name, sex, age);
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,每次输出一个
读取单个字符。
读取单个字符
读取一串字符串
.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 name, age, sex, height; name = "周红"; age = 18; sex = '女'; height = 180; Console.WriteLine("姓名:{0}\t年龄: {1}\t身高: {2}\t性别: {3}\t",name,age,sex,height);
装箱拆箱是值类型和引用类型之间相互转换时要执行的操作。
装箱是值类型向引用类型转换时发生。
object obj=1;
常量是值类型,值类型是要放到栈上的。而object是引用类型,需要放在堆上。所以执行装箱操作不可避免地要在堆上申请内存空间。并且将堆栈上的值类型数据赋值到申请的堆内存空间上,这肯定要消耗内存和CPU。
拆箱是引用类型向值类型转换时发生。
object obj=5;//先执行装箱操作 int value=(int)obj;
拆箱操作与装箱操作与之相反。
针对于两个变量不可兼容 比如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
int size = sizeof(int); Console.WriteLine(size); Console.WriteLine("char类型的对象 {0}", typeof(char));
输出结果为:4
char类型的对象 System.Char
is as运算符
as运算符主要用于在兼容的引用类型之间执行转换。
Console.ReadLine();//用于接收用户的输入,输入类型默认为string