C#基础语法
一,注释语句
static void Main(string[] args)
{//语句块包含在{}中
int MyInterger;//语句以;结束
string MyString;///忽略空白字符(空格/回车/TAB)
MyInterger = 17;
}//要注意防止注释嵌套出错,可用#if,#endif预处理语句。
static void Main(string[] args)
{//语句块包含在{}中
int MyInterger;//语句以;结束
string MyString;///忽略空白字符(空格/回车/TAB)
MyInterger = 17;
}//要注意防止注释嵌套出错,可用#if,#endif预处理语句。
二,数据类型
A,内置类型:CS使用 FrameWork库中的数据类型
sbyte = System.SByte,...
类型 字节数 解释
byte 1 无符号字节型
A,内置类型:CS使用 FrameWork库中的数据类型
sbyte = System.SByte,...
类型 字节数 解释
byte 1 无符号字节型
sbyte 1 有符号字节型
short 2 有符号短字节型
ushort 2 无符号短字节型
int 4 有符号整型
uint 4 无符号整型
long 8 有符号长整型
ulong 8 无符号长整型
float 4 浮点数
double 8 双精度数
decimal 8 固定精度数
string unicode字串型
char unicode字符型
bool 真假布尔型//只接受true和false两种值。不接受任何整数类型。
short 2 有符号短字节型
ushort 2 无符号短字节型
int 4 有符号整型
uint 4 无符号整型
long 8 有符号长整型
ulong 8 无符号长整型
float 4 浮点数
double 8 双精度数
decimal 8 固定精度数
string unicode字串型
char unicode字符型
bool 真假布尔型//只接受true和false两种值。不接受任何整数类型。
B,用户定义类型包括:
类类型(class)
类类型(class)
结构类型(struct)
enum函数接口类型(interface)
enum函数接口类型(interface)
2,值类型(Value Types)和引用类型(Reference Types)
A,值类型:内存顺序分配在栈中。他们包括:所有基本或内置类型(不包括string类型)、结构类型、枚举类型(enum type)
B,引用类型:内存非线性分配在堆中,当它们不再被使用时CS通过垃圾收集器自动释放内存(C++用delete)。它们使用new运算符来创建。
引用类型包括:类类型、接口类型、象数组这样的集合类型类型、字串类型、枚举类型
结构型适于快速访问和拥有少量成员的数据类型。如果涉及量较多,你应该创建一个类来实现他。
B,引用类型:内存非线性分配在堆中,当它们不再被使用时CS通过垃圾收集器自动释放内存(C++用delete)。它们使用new运算符来创建。
引用类型包括:类类型、接口类型、象数组这样的集合类型类型、字串类型、枚举类型
结构型适于快速访问和拥有少量成员的数据类型。如果涉及量较多,你应该创建一个类来实现他。
3,数据类型转换
隐式转换:从低精度的转换到高精度的,所以不可能转换到char;另外可以把0隐式转换成枚举型,其他整数不行。
隐式转换:从低精度的转换到高精度的,所以不可能转换到char;另外可以把0隐式转换成枚举型,其他整数不行。
显式转换
static void Main(string[] args)
{
short shortResult, shortVal = 4;
int integerVal = 67;
long longResult;
float floatVal = 10.5F;
double doubleResult, doubleVal = 99.999;
string stringResult, stringVal = "17";
bool boolVal = true;
static void Main(string[] args)
{
short shortResult, shortVal = 4;
int integerVal = 67;
long longResult;
float floatVal = 10.5F;
double doubleResult, doubleVal = 99.999;
string stringResult, stringVal = "17";
bool boolVal = true;
Console.WriteLine("Variable Conversion Examples\n数据类型转换范例\n");
doubleResult = floatVal * shortVal;
Console.WriteLine("Implicit,->double:{0}*{1}->{2}", floatVal, shortVal, doubleResult);
shortResult = (short)floatVal;
doubleResult = floatVal * shortVal;
Console.WriteLine("Implicit,->double:{0}*{1}->{2}", floatVal, shortVal, doubleResult);
shortResult = (short)floatVal;
Console.WriteLine("Implicit,->short:{0}->{1}", floatVal, shortResult);
stringResult = Convert.ToString(boolVal) + Convert.ToString(doubleVal);
Console.WriteLine("Explicit,->string:\"{0}\"+\"{1}\"->{2}", boolVal, doubleVal, stringResult);
longResult = integerVal + Convert.ToInt64(stringVal);
Console.WriteLine("Mixed,->long {0}+{1}->{2}", integerVal, stringVal, longResult);
stringResult = Convert.ToString(boolVal) + Convert.ToString(doubleVal);
Console.WriteLine("Explicit,->string:\"{0}\"+\"{1}\"->{2}", boolVal, doubleVal, stringResult);
longResult = integerVal + Convert.ToInt64(stringVal);
Console.WriteLine("Mixed,->long {0}+{1}->{2}", integerVal, stringVal, longResult);
}
三,变量:
1,普通变量:
(1),命名规则:字母或_或@ + 字母或_或数字 (/用于转义,@用于逐个转义指定,@常用于保留关键字前以保持与其他语言兼容)
(2),声明变量: 变量类型 变量名
变量赋值:变量 = 要赋的值
C#变量被访问之前必须被初始化;否则编译时会报错。因此,不可能访问一个未初始化变量
三,变量:
1,普通变量:
(1),命名规则:字母或_或@ + 字母或_或数字 (/用于转义,@用于逐个转义指定,@常用于保留关键字前以保持与其他语言兼容)
(2),声明变量: 变量类型 变量名
变量赋值:变量 = 要赋的值
C#变量被访问之前必须被初始化;否则编译时会报错。因此,不可能访问一个未初始化变量
(如不确定的指针、超出数组边界的表达式)。变量在使用前最好习惯是要先声明和初始化。
(3)C#中没有全局的的变量或全局函数,全局方式的操作是通过静态函数和静态变量来实现的。
int i;
string text;//在循环外未初始化
for (i = 0;i<10;I++)
{
text = "Line" + Convert.ToString(i);//在循环中未初始化,在退出循环的时候会丢失值,再引用就出错。
Console.WriteLine("{0},text);
}
Console.WriteLine("Last txet output in loop:{0},text);//出错。改正方法是在循环外初始化:string text="";
(3)C#中没有全局的的变量或全局函数,全局方式的操作是通过静态函数和静态变量来实现的。
int i;
string text;//在循环外未初始化
for (i = 0;i<10;I++)
{
text = "Line" + Convert.ToString(i);//在循环中未初始化,在退出循环的时候会丢失值,再引用就出错。
Console.WriteLine("{0},text);
}
Console.WriteLine("Last txet output in loop:{0},text);//出错。改正方法是在循环外初始化:string text="";
(4)命名约定:简单的用camelCase,复杂的用PascalCase
(5)变量的七种类型:
(5)变量的七种类型:
class A
{
public static int x;//静态变量,存在期从类装载直到该程序结束。
int y;//非静态变量,或实例变量,从类实例创建到实例空间释放。
void F(int[] v,int a,ref int b,out int c){
int i = 1;//局部变量,不会被初始化
c = a + b++;//
}
}
2,枚举
enum 枚举名:枚举值类型(默认是int,默认赋值0,)
{
枚举值1=...,
{
public static int x;//静态变量,存在期从类装载直到该程序结束。
int y;//非静态变量,或实例变量,从类实例创建到实例空间释放。
void F(int[] v,int a,ref int b,out int c){
int i = 1;//局部变量,不会被初始化
c = a + b++;//
}
}
2,枚举
enum 枚举名:枚举值类型(默认是int,默认赋值0,)
{
枚举值1=...,
枚举值2=...,
枚举值3,//不赋值的话,默认为最后一个明确具体值的值+1
...
}
枚举名 变量名=枚举名.枚举值
枚举值3,//不赋值的话,默认为最后一个明确具体值的值+1
...
}
枚举名 变量名=枚举名.枚举值
namespace Ch05Ex02
{
enum orientation:byte
{
north=1,
south=2,
east=3,
west=4
}
///Class1's Desciption
{
enum orientation:byte
{
north=1,
south=2,
east=3,
west=4
}
///Class1's Desciption
class Class1
{
static void Main(string[] args)
{
byte directionByte;
string directionString;
orientation myDirection = h;
Console.WriteLine("mydirection = {0}", myDirection);
directionByte = (byte)myDirection;//因为enum存得下byte,所以理论上可以正确地反过来转换,但逻辑上不一定正确。myDirection = (orientation)myByte;
directionString = Convert.ToString(myDirection);//等价命令是directionString = myDirection.ToString();
//因为不单是把枚举变量值转存到string变量中,所以不能用string(mydirection);
//反向转换命令是orientation myDirection = (orientation)Enum.Parse(typeof(orientation),myString);但由于enum不一定存得下 string,所
{
static void Main(string[] args)
{
byte directionByte;
string directionString;
orientation myDirection = h;
Console.WriteLine("mydirection = {0}", myDirection);
directionByte = (byte)myDirection;//因为enum存得下byte,所以理论上可以正确地反过来转换,但逻辑上不一定正确。myDirection = (orientation)myByte;
directionString = Convert.ToString(myDirection);//等价命令是directionString = myDirection.ToString();
//因为不单是把枚举变量值转存到string变量中,所以不能用string(mydirection);
//反向转换命令是orientation myDirection = (orientation)Enum.Parse(typeof(orientation),myString);但由于enum不一定存得下 string,所
以可能出错。如myString赋值为North,就不能映射到orientation中的north,出错。
Console.WriteLine("byte equivalent = {0}", directionByte);
Console.WriteLine("string equivalent = {0}", directionString);
}
}
}
Console.WriteLine("byte equivalent = {0}", directionByte);
Console.WriteLine("string equivalent = {0}", directionString);
}
}
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论