kshen转C#基础语法

转载 2006年06月01日 09:45:00
一,注释语句
  /*注释语句包含在"反斜杠* "和" *反斜杠"中,
  或者两个反斜杠和换行符之中,
  或者三个反斜杠和换行符之中(可以被VS自动识别为文件注释以提取)
  要注意注释中的/,该续行符会把下一行连上来一起注释掉出错。
*/

  
static void Main(string[] args)
    {
//语句块包含在{}中
      int MyInterger;//语句以;结束
      string   MyString;///忽略空白字符(空格/回车/TAB)
      MyInterger = 17;
    }
  
//要注意防止注释嵌套出错,可用#if,#endif预处理语句。

二,数据类型
  
,基本型/内置型  用户自定义型
  A,内置类型:CS使用.net 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)
接口类型(
interface)


  
,值类型(Value Types)和引用类型(Reference Types)

  A,值类型:内存顺序分配在栈中。他们包括:所有基本或内置类型(不包括string类型)、结构类型、枚举类型(
enum type)
  B,引用类型:内存非线性分配在堆中,当它们不再被使用时CS通过垃圾收集器自动释放内存(C
++用delete)。它们使用new运算符来创建。
  引用类型包括:类类型、接口类型、象数组这样的集合类型类型、字串类型、枚举类型
  结构型适于快速访问和拥有少量成员的数据类型。如果涉及量较多,你应该创建一个类来实现他。

  
,数据类型转换
  隐式转换:从低精度的转换到高精度的,所以不可能转换到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),命名规则:字母或_或@ + 字母或_或数字 (/用于转义,@用于逐个转义指定,@常用于保留关键字前以保持与其他语言兼容)
  (
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;//非静态变量,或实例变量,从类实例创建到实例空间释放。
 
 
/*v[0]是数组元素,a是值参数,b是引用参数,c是输出参数 */
 
void F(int[] v,int a,ref int b,out int c){
   
int i = 1;//局部变量,不会被初始化
    c = a + b++;//
  }

}

  
,枚举
    
enum 枚举名:枚举值类型(默认是int,默认赋值0,1,2...)
    {
     枚举值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
= orientation.north;
        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);
    }

  }

}


     
  
,结构
    
struct 结构名:
    {
     访问方式1 变量类型1 变量名1;
//访问方式public/private
     访问方式2 变量类型2 变量名2;  
     ...
    }
    结构名 结构变量名;
    结构变量名.枚举值
=...;

  
,一维数组
    变量类型[] 数组名
= new 变量类型[元素个数]{元素0,元素1,元素2...}//元素个数必须是整数或者整数常量,而且必须与后面的元素列值个数相同,否则出错。元素个数的new声明和后面的元素列值可以只选一个,就能声明并初始化数组。
    遍历方法
A,For循环到.Length
for(i=0,i<friendNames.Length,i++)
{
  Console.WriteLine(friendNames[i]);
}

B,Foreach进行只读访问
foreach(string listName in friendNames)
{
  Console.WriteLine(listName);
}


  
,二维数组(多维)
    变量类型[,] 数组名
= new 变量类型[一维元素个数,二维元素个数]{{元素00,元素01,元素02...},{元素10,元素11,元素12...}...}


  
,直角数组(交错数组,数组中的数组)
  
,字符串操作:

string myString = "I have a dream.";
char myChar = myString[2];//把string变量当作只读的char数组使用,不能改写myString[2]
char[] myChars = myString.ToCharArray();

char[]separator =' '};//设定分隔符
string[] myWords =myString.Split(separator);//分隔成数组
Console.WriteLine("myString have {0} chars",myString.Length);
myString
=myString.ToLower();//转小写
myString=myString.ToUpper();//转大写
myString=myString.Trim();//删前后空格
myString=myString.TrimStart();//删前空格
myString=myString.TrimEnd();//删后空格
myString=myString.PadLeft(位数);//前补空格到指定位数
myString=myString.PadRight(位数);//后补空格到指定位数
myString=myString.PadLeft(位数,字符);//前补指定字符到指定位数


char[] trimChars ="e","#","*"};
myString
= myString.trim(trimChars);//删指定字符


四,常量:
   Const
int intTwo = 2 (必须声明的同时赋值)

五,运算符:按优先级顺序排列
  
  算术运算符:前缀的
++-- ,前缀一元的+-*/ 求余 %+-
  位移运算符:
<<,>>
  比较运算符:小于
< 大于 > 小于等于 <= 大于等于 >=
  比较运算符:
==,!=
  逻辑运算符:
&
  逻辑运算符:
^
  逻辑运算符:
|
  逻辑运算符:
&&
  逻辑运算符:
||
  比较运算符:等于
= *= /= %= += -= <<= >>= &= ^=  |=
  后缀的
++--

六,名称空间

  
using system;  //system是.net FrameWork应用程序根命名空间,之后就能在全局名称空间引用system中的代码。
  namespace 空间名称
   
{
      
using 空间名称2.代码2;//之后就能在代码1处直接引用代码2
      代码1;
      
namespace 空间名称2
      
{
      代码2;
      }

   }


七,条件语句
  A,If语句:通用判断
    If (条件1)
      代码1;
    Else
      代码2;

    If (条件1)
    {}
    Else
    {}

  B,Switch语句:用于同条件多结果判断
    Switch (条件)
     
{
      Case 结果1:
      代码1;
      
break;
      Case 结果2:
      代码2;
      
break;
      Case 结果3:
      代码3;
      
goto Case  结果2;//此时Case..相当于一个Label
      Case 结果4:
      代码4;
      Return;
      Case 结果5:
      Case 结果6:
      Case 结果7:
      代码567;
//只要满足上面三个Case之一就执行。
      break;
      ...
      Default:
      代码;
      
break;
     }
   
  C,三元运算语句:(条件)
?True结果:False结果
    常用于简单赋值语句:
string myString = (myInteger<10)?"Less than 10":"Great than or equal to";
    或者用于简单格式化文本语句:Console.WriteLine(
"I am {0} year{1} old.",myinteger,myinteger==1?"":"s");


八,循环语句:
  A,Do...While: 当条件为True时循环。
    Do
    
{...}
    While(条件);
//分号不可少
  B,While...: 当条件为True 时循环。
    While(条件)
    
{...}
    
  C,For...: 使用计数器循环。
    For (变量;条件;操作)
//可以在此时声明变量,但作用域就仅限于循环内了。
    {...
    Break;
//跳出整个循环
    Return;
    Continue;
//中止当前循环,继续下一个循环
    Goto 标签;//禁止从循环外部用goto跳入循环内部
    }


九,函数

A,函数定义:
   
static 返回值类型/void 函数名(参数类型1 参数1,参数类型2 参数2,...)
   
{
      ...
     
return 返回值;//return必须在函数结束前被处理,不能跳过
     
//return ;//当用于void时用不带返回值的return来中止函数。
    }


B,参数数组:
 
static int sumVals(params int[] vals)
 
{
   
int sum = 0;
   
foreach(int val in vals)
   
{
      sum
+=val;
    }

   
return sum;
  }


 
static void Main(string[] args)
 
{
   
int sum = sumVals(1,5,2,9,8);
    Console.WriteLine(
"Summed Values = {0}",sum);
  }


C,值传递参数
/引用传递参数/out输出参数

static void showDouble(ref int val)//引用传递参数
{
  val
*=2;
  Console.WriteLie(
"val doubled = {0}",val);
}

static void showDouble2(int val)//值传递参数
{
  val
*=2;
  Console.WriteLine(
"val doubled = {0}",val);
}

static void showDouble3(int val,out int valIndex)//out输出参数
{
  val
*=2;
  valIndex
++;
  Console.WriteLine(
"val doubled = {0}",val);
}


int myNmuber = 5;
showDouble(
ref myNumber);//引用传递参数,会改变myNumber值,所以要求myNumber必须不是常量或者未初始化的变量。
showDouble2(myNumber);//值传递参数,不会改变myNumber值

int valindex;//out输出参数,不用初始化,初始化了也会在函数开始执行时丢失值。
showDouble3(myNumber,out valIndex);

D,全局变量
static/const 变量名//const定义的全局变量是只读的
当全局变量与局部变量同名时,局部变量优先,要用类似class1.myString来引用全局变量。

E,Main()函数;
static void Main()
static void Main(string[] args)//args是函数命令行参数
static int Main()//返回一个表示函数终止状态的int值
static int Main(string[] args)//返回一个表示函数终止状态的int值

F,结构中的函数
G,同名函数的重载:同名,签名不同,系统自动识别使用哪个函数
H,委托:用于把引用存储为函数以灵活调用函数

十,面向对象基础

十一,类

1,类的定义
class 类名
{
 
//类成员
}

internal/public

sealed/abstract

十和,接口
interface IMyInterface
{
 
//接口成员
}


相关文章推荐

c#语法基础

  • 2014年03月04日 12:51
  • 27.93MB
  • 下载

C#基础语法篇

  • 2017年05月19日 15:33
  • 64B
  • 下载

c#基础语法笔记----个人学习笔记

改变应用图标 1.当“解决方案资源管理器”中有项目选中时,在“项目”菜单上单击“属性”。  2.选择“应用程序”窗格。 3.从“图标”下拉列表中选择图标 (.ico) 文件。 ...

C#语法基础(vc2005教程总结)

  • 2009年02月14日 00:27
  • 47KB
  • 下载

【C#基础】【语法01】课后作业题 01-05

练习一、 创建控制台应用程序,定义变量保存自己姓名、年龄、性别、生日,最后将个人信息输出。(要求姓名、年龄、性别、生日从键盘输入)   练习二、 创建控制台应用程序,实现四则运算(加减乘除...

C#语法基础

  • 2012年12月11日 14:49
  • 320KB
  • 下载

C#语法基础知识

  • 2013年03月19日 13:41
  • 830KB
  • 下载

C#基础语法

.net     是一种多语言的平台,开发.net 可以用多达几十种语言进行。   Java 是一种单语言的平台。 快捷键:   home  移到本行非空白字符前面           end    ...

C#语法基础——数据类型(1)

  • 2012年11月08日 20:38
  • 476KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:kshen转C#基础语法
举报原因:
原因补充:

(最多只允许输入30个字)