//
引入命名空间
//
命名空间
:
看做是一个范围
,
用来标注一些成员的归属
//using
关键字 用来引入指定的命名空间
,
它可以告诉编译器
,
我们后续的代码中
,
使用的是哪个命名空间
using System ;using System . Collections . Generic ;using System . Linq ;using System . Text ;using System . Threading . Tasks ;
//namespace
命名空间的名称 定义一个命名空间
namespace _01_ 项目基本结构{
//internal
访问修饰符
,
设置类能被访问的范围
//class
创建一个类
,
类名是
"Program
namespace _02_ 项目基本结构 {class Student{}
控制台相关常用方法
namespace _02_ 控制台相关常用方法{internal class Program{static void Main ( string [] args ){Console . WriteLine ( " 控制台输出一段内容 " );// 通过控制台扬声器播放提示音//Console.Beep();// 如果 () 中写一个 true, 表示不在控制台显示按下的字符//Console.ReadKey(true);//Console.WriteLine(" 用户按下了一个键 ");// 获取用户输入的一行文本 ( 输入之后敲回车 , 才算输入一行内容 )//Console.ReadLine();//Console.WriteLine(" 用户输入了一行内容 , 并且按下了回车 ");// 输出一段内容并换行Console . WriteLine ( " 输出内容 " );Console . WriteLine ( " 输出内容 " );// 输入一段内容 ( 不会换行 ) \n 表示换行Console . Write ( " 输出内容 \n" );Console . WriteLine ( " 获取当前控制台的背景颜色 " );// 用于获取控制台的背景色Console . WriteLine ( Console . BackgroundColor );// 用于设置控制台的背景色Console . BackgroundColor = ConsoleColor . Red ;Console . WriteLine ( " 获取当前控制台的前景色 ( 字体颜色 )" );// 获取字体颜色Console . WriteLine ( Console . ForegroundColor );Console . ForegroundColor = ConsoleColor . Yellow ;
C#
标识符
标识符是用来识别类、变量、函数或任何其它用户定义的项目。(通俗的说就是类名、变量名、函数
名等)在
C#
中,命名必须遵循如下基本规则:
1.
标识符由字母、数字、下划线(
_
)组成。
2.
标识符必须以字母、下划线或
@
开头,后面可以跟一系列的字母、数字(
0 - 9
)、下划线(
_
)、
@
。
3.
标识符中的第一个字符不能是数字。
4.
标识符必须不包含任何嵌入的空格或符号,比如
? - +! # % ^ & * ( ) [ ] { } . ; : " ’ / \
。
5.
标识符不能是
C#
关键字。除非它们有一个
@
前缀。 例如,
@if
是有效的标识符,但
if
不是,因
为
if
是关键字。
6.
标识符必须区分大小写。大写字母和小写字母被认为是不同的字母。
7.
不能与
C#
的类库名称相同
C#
关键字
变量和常量
变量
变量就是对程序中某个数据的引用
,
比如
: name
表示一个名字
, x
表示一个数值
.....
变量在程序中只是一个存储数据的地方
,
每一个变量都有一个特定的类型
,
类型决定了变量所
占用的内存空间的大小
常用的类型 :int double bool string char
变量的赋值
int i1 ;// 使用 = 赋值 (= 赋值运算符 )// 把 = 右边的值赋值给 = 左边的变量i1 = 10 ;// 没有双引号就表示使用该变量存储的值Console . WriteLine ( i1 );// 有双引号表示输出 "" 里面的内容Console . WriteLine ( "i1" );// 如果变量被再次赋值 , 那么将会将之前保存的值丢失 , 重新保存新的值i1 = 20 ;Console . WriteLine ( i1 );
声明变量并赋值
可以在定义变量的时候直接给变量赋值
int i2 = 10 ;Console . WriteLine ( i2 );// Console.WriteLine(i3);// 可以同时定义多个同类型的变量int i3 , i4 , i5 ;// 同时定义多个同类型的变量并赋值int i6 = 100 , i7 = 50 ;
数据类型
在
C#
中,变量分为以下几种类型:
值类型
(
基本数据类型
)
(
Value types
)
引用类型(
Reference types
)
数据类型
在
C#
中,变量分为以下几种类型:
值类型
(
基本数据类型
)
(
Value types
)
引用类型(
Reference types
)
分类
数值类型
整数数值类型
有符号数:
sbyte,int,short,long
无符号数:
byte,ushort,ulong,unit
小数数值
(
浮点数
)
类型
单精度
float
,赋值时,要加
f
双精度
double
布尔类型
关键字:
bool
内容:
true/false
字符类型
关键字:
char
,
char c = 'a';
枚举类型
引用类型(
Reference types
)
引用类型不包含存储在变量中的实际数据,但它们包含对变量的引用。
换句话说,它们指的是一个内存位置。使用多个变量时,引用类型可以指向一个内存位置。如果内存位
置的数据是由一个变量改变的,其他变量会自动反映这种值的变化。内置的 引用类型有:
object
、
dynamic
和
string
。
对象(
Object
)类型
object
是所有类型的父类型,也就是说,
object
可以存储任意的数据类型
,
对象是
C#
中所有数据类型的终
极基类
(
父类
)
字符串(
String
)类型
字符串(
String
)类型 允许您给变量分配任何字符串值。字符串(
String
)类型是
System.String
类的别
名。它是从对象(
Object
)类型派生的。字符串(
String
)类型的值可以通过两种形式进行分配:引号
和
@
引号。
动态
(dynamic)
类型
// string 字符串类型 用于存储多个字符// 需要使用 "" @"" $"" 包裹// \n 换行 \t 空格string name1 = " 吴 \n 亦 \t 凡 " ;Console . WriteLine ( name1 );// 字符串中有一些字符不能直接使用 比如 \n 会被解析成换行 \t 会被解析成空格// 需要使用 \ 进行转义string str = "\\n 换行 \\t 空格 \"" ;Console . WriteLine ( str );//@"" 创建的字符串可以不需要使用转义字符就可以显示这些特殊的字符 ( 写啥就是啥 )// " 比较特殊 需要使用 "" 进行表示string name2 = @"某 \n某 \t某 """"" ;Console . WriteLine ( name2 );
数据类型的区别
栈内存和堆内存
概念
堆
(Heap)
:在
c
里面叫堆,在
c#
里面其实叫托管堆。
栈
(Stack)
:就是堆栈,简称栈。
托管堆:
托管堆不同于堆,它是由
CLR
(公共语言运行库
(Common Language Runtime)
)管理,当堆中满了之
后,会自动清理堆中的垃圾。所以,做为
.net
开发,我们不需要关心内存释放的问题。
栈
栈区的特性:先进后出 入栈的时候是
123
按顺序入的,那么出栈的时候就是
321
按顺序出。
当一个栈结束时会把存在栈中的数据依次出栈。
内存堆栈:存在内存中的两个存储区(堆区,栈区)。
栈区:存放函数的参数、局部变量、返回数据等值,由编译器自动释放
堆区:存放着引用类型的对象,由
CLR
释放
}
}
//
驼峰命名法
user name
//
大驼峰
UserName
从第一个单词开始 首字母大写
//
小驼峰
userName
从第二个单词开始 首字母大写
//
下划线命名法
//user_name
//
在命名空间
(namespace)
中使用
class
定义一个类
,
类的名字使用大驼峰命名法
//
类
:
不是对象 是对象的模版 就像我们平常所说的
"
人类
"
不是一个人 而是
"
人
"
的模版
class
Student
{
//
类的内部的东西 我们称之为类的成员
(
属性
)
//
声明一个类的成员的格式
: public
成员的类型 成员的名称
(
一半也使用大驼峰命名法
)
public
string
Name
;
public
int
Age
;
public
char
Sex
;
}
}
堆
堆是一块内存区域,在堆里可以分配大块的内存用于存储某类型的数据对象。与栈不同,堆里的内存能
够以任意顺序存入和移除,除了
string
先进先出。虽然程序可以在堆里保存数据,但并不能显式地删除
它们。
CLR
的自动
GC
(
Garbage Collector
,垃圾收集器)在判断出程序的代码将不会再访问某数据项
时,自动清除无主的堆对象。
值类型和引用类型的区别