C#基础语法
一,注释语句

static void Main(string[] args)
{//语句块包含在{}中
int MyInterger;//语句以;结束
string   MyString;///忽略空白字符(空格/回车/TAB)
MyInterger = 17;
}//要注意防止注释嵌套出错,可用#if,#endif预处理语句。
二,数据类型
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两种值。不接受任何整数类型。
B,用户定义类型包括:
类类型(class)
结构类型(struct)
enum函数接口类型(interface)

2,值类型(Value Types)和引用类型(Reference Types)
A,值类型:内存顺序分配在栈中。他们包括:所有基本或内置类型(不包括string类型)、结构类型、枚举类型(enum type)
B,引用类型:内存非线性分配在堆中,当它们不再被使用时CS通过垃圾收集器自动释放内存(C++用delete)。它们使用new运算符来创建。
引用类型包括:类类型、接口类型、象数组这样的集合类型类型、字串类型、枚举类型
结构型适于快速访问和拥有少量成员的数据类型。如果涉及量较多,你应该创建一个类来实现他。
3,数据类型转换
隐式转换:从低精度的转换到高精度的,所以不可能转换到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;
            Console.WriteLine("Variable Conversion Examples\n数据类型转换范例\n");
            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);
        }
三,变量:
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="";
(4)命名约定:简单的用camelCase,复杂的用PascalCase
(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=...,
枚举值2=...,
枚举值3,//不赋值的话,默认为最后一个明确具体值的值+1
...

枚举名 变量名=枚举名.枚举值
namespace Ch05Ex02
{
  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,所
以可能出错。如myString赋值为North,就不能映射到orientation中的north,出错。
        Console.WriteLine("byte equivalent = {0}", directionByte);
        Console.WriteLine("string equivalent = {0}", directionString);
    }
  }
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。