文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>C#小知识整理二

C#小知识整理二

时间:2011-04-18  来源:冥海

1.新数组接收原数组不为0的数。

//①求出原数组不为0的长度

            int[] num = { 10, 20, 30, 0, 40, 5, 10, 0 };

            int count = 0;

            for(int i=0;i<num.Length;i++)

            {

                if(num[i]!=0)

                {

                    count++;

                }

 

            }

 

           int[] num2 = new int[count];

//②原数组中不为0的赋值给新数组,同时新数组的下标自加 

原数组的下标不是新数组的下标

            int t = 0;

            for (int i = 0; i < num.Length; i++)

            {

                if (num[i] != 0)

                {

                    num2[t] = num[i];

                    t++;

                }

 

            }

//③遍历输出新数组的数

            for (int i = 0; i < num2.Length; i++)

                Console.WriteLine(num2[i]);

 

Console.ReadKey();

 

 

2.{"gao", "zhang", "wang", "tao"} 输出 "gao"|"zhang"|"wang"|"tao"

string[] strs = { "gao", "zhang", "wang", "tao" };

string s = "";

 

            for (int i = 0; i < strs.Length-1; i++)

            {

                s += strs[i]+"|";

            }

           

            s += strs[strs.Length-1]

            Console.Write(s);  Console.ReadKey();

3.foreach遍历数组

string[] strs = { "gao", "zhang", "wang", "tao" };

//在数组中依次遍历 in strs(数组名) 保存到变量s中

foreach (string s in strs) 

Console.WriteLine(s);

 

执行当s等于"wang"时跳出本次循环,执行下一次循环。

string[] strs = { "gao", "zhang", "wang", "tao" };

foreach (string s in strs)

{

if (s == "wang")

 {

 continue;

 }

 Console.WriteLine(s);

}

输出"gao", "zhang", "tao"

 

 

4.

static void Main(string[] args)

{

    Num();

}

 

static void Num()

{

    Console.WriteLine("请输入一个整数");

    string s= Console.ReadLine();

    Console.WriteLine(s);

    Console.ReadKey()

}

 

 

5.输入字符串,输出次数。

        static void Main(string[] args)

        {

            Console.WriteLine("请输入您的字符串");

            string s = Console.ReadLine();

 

 

           Console.WriteLine("请输入您的次数");

           int i=Convert.ToInt32(Console.ReadLine());

 

string f = Strs(i, s);

            Console.WriteLine(f);

            Console.ReadKey();

        }

 

 

        static string  Strs(int n,string s)

        {

            string nums = "";

 

            for (int i = 0; i <n; i++)

            {

                nums+=s;

 

            }

            return nums;

           

        }

 

 

6.函数返回值必须有值

static void Main(string[] args)

        {

            int i1 = 40;

            int i2= 20;

            int i3 = Num(i1, i2);

            Console.WriteLine(i3);

            Console.ReadKey();

}

 

static int Num(int a, int b)

        {

            if (a > b)

            {

                return 30;

}

else if (a == b)

            {

                return 20;

}

            else  //如果没有此语句,那么可能无法返回值

            { return 0; }

}

 

7.传数组,分隔符()到函数里进行函数的构造。

static void Main(string[] args)

{

string[] strs = { "aa", "bb", "cc", "dd" };

            string sf = Str(strs, "()");

 

            Console.WriteLine(sf);

            Console.ReadKey();

}

 

static string Str(string[] s, string fg)

{

            string st = "";

            for (int i = 0; i < s.Length; i++)

                st=st+ s[i] + fg;

 

            return st;

}

 

 

8.函数的重载

只有参数的类型、顺序不一致才能函数重名,函数返回值类型一致与否没关系

构成重载的条件:参数类型不同或者参数个数不同(不严谨的),与返回值无关。

static void Main(string[] args)

{

  SayHellow(123);

  Console.ReadKey();

}

 

 

static void SayHellow(string  a)

{

  Console.WriteLine("您好啊!!!");

}

 

 

static void SayHellow(int n)

{

Console.WriteLine(102);

}

 

 

9.可变参数params 可变参数应当放到最后,即最后一个参数是可变参数

个数不确定的可变参数以数组的形式传递

int[] num = { 10, 20, 30, 45 };

//可以①int t = Bnum(num);②int t = Bnum(10, 20, 30, 45);

int t = Bnum(10, 20, 30, 45);

Console.WriteLine(t);

Console.ReadKey();

 

static int Bnum(params int[] n)

{

  int max = 0;

  for (int i = 0; i < n.Length; i++)

   {

      if (n[i] > max)

      max = n[i];

   }

return max;

}

 

 

10.ref 与out  

ref需要赋值进行传递

out得出调用函数(外部函数)里的值,本身的不需要赋值  

(1)折腾的是复制品,内部不影响外部 10  20

static void Main(string[] args)

        {

            int i = 10;

            int s = 20;

            Doint(i, s);

 

            Console.WriteLine("{0},{1}",i,s);

Console.ReadKey();

}

 

static void Doint(int i, int s)

        {

            int temp = 0;

            temp = i;

            i = s;

            s = temp;

         }

 

 

 

 

 

(2)使用了ref  使用之前必须给变量赋值,内部影响外部 20  10

static void Main(string[] args)

        {

            int i = 10;

            int s = 20;

            Doint(ref i, ref s);

Console.WriteLine("{0},{1}",i,s);

Console.ReadKey();

}

 

static void Doint(ref int i, ref int s)

        {

            int temp = 0;

            temp = i;

            i = s;

            s = temp;

        }

 

(3)//Parse(Console.ReadLine(), out b) 测试类型转换是否成功

static void Main(string[] args)

        {

            bool b= false;//不需要为out赋值

            int i = Parse(Console.ReadLine(), out b);

            if (b)

            {

                Console.WriteLine("成功,i={0}", i);

            }

            else

            {

                Console.WriteLine("错误");

            }

            Console.ReadKey();

 

        }

 

static int Parse(string s,out bool success)

        {

            //Console.WriteLine(success);

            if(s=="一")

            {

                success = true;

                return 1;

            }

            else if(s=="二")

{

                success = true;

                return 2;

            }

            else

            {

                success = false;

                return -1;

            }

        }

 

(4)判断string 与int 之间类型转换是否成功

string s = Console.ReadLine();

int i;

if(int.TryParse(s,out i))

{

 Console .WriteLine ("转换成功");

           

}

else

{

Console .WriteLine ("转换失败");

}

 

 

11.字符串函数(一)

(1)测试长度 " " 长度为1  null无法测试到长度

string s = " ";

string m = null;

Console.WriteLine(s.Length);

Console.ReadKey();

 

(2)string.IsNullOrEmpty(s)是否是"" 或null 

null的长度无法确定,Empty的长度为0," "  空格的长度为1

string s = "";

if (string.IsNullOrEmpty(s))

{

   Console.WriteLine("长度为0");

}

else

{

Console.WriteLine("有长度了");

}

 

(3)无法对指定的字符进行修改,只能进行访问或者生成一个新的字符串。

(4)可以生成一个新的字符串

string s = "abcdefg";

char[] chr=s.ToCharArray ();//①成为char的数组

chr[2] = 'k'; //②对指定索引的字符进行更改

string s1 = new string(chr);//③生成一个新的字符串

Console.WriteLine(s1);

Console.WriteLine(s);

Console.ReadKey();

 

(5)对数值型数组的更改

int[] num = { 10, 20, 30, 40 };

num[1] = num[1] + 100;

foreach (int i in num)

Console.WriteLine(i);

Console.ReadKey();

 

(6)2009年9月5日  改写成 二零零九年九月五日

//利用函数构造

static void Main(string[] args)

{

            string s =Console .ReadLine();

            string f = Strs(s);

            Console.WriteLine(f);

            Console.ReadKey();

}

 

static string Strs(string a)

{

  char[] ymd = { '零', '一', '二', '三', '四', '五', '六', '七', '八', '九' };

  char[] chr = a.ToCharArray();

  int j = 0;

  for (int i = 0; i < chr.Length; i++)

{

if (chr[i] > 48 && chr[i] < 58) //判断当前的字符是否在0~9之间  2009年9月1日  chr[0]—2

      { 

      j = chr[i] - 48; //求出该字符对应的下标索引 chr[0]也就是2的ASCii的值 减去48得出下标

      chr[i] = ymd[j]; //新的数组的下标的值赋值给当前数组 chr[0]对应的新的数组是ymd[2] 二 }  

string s1 = new string(chr);

}     return s1;

}

(2)第二种方法

string s =Console .ReadLine();

string f = Strs(s);

Console.WriteLine(f);

Console.ReadKey();

 

static string Strs(string a)

{

  char[] ymd = { '零', '一', '二', '三', '四', '五', '六', '七', '八', '九' };

  char[] chr = a.ToCharArray();

  int j = 0;

 

  for (int i = 0; i < chr.Length; i++)

{

    if (chr[i] > 48 && chr[i] < 58)   //判断当前的字符是否在0~9之间  2009年9月1日  chr[0]—2

    { 

        j = chr[i] - 48;     //求出该字符对应的下标索引     chr[0]也就是2的ASCii的值 减去48得出下标 50-48=2

        chr[i] = ymd[j];     //新的数组的下标的值赋值给当前数组 chr[0]对应的新的数组是ymd[2] 二

}

}

 

string s1 = new string(chr);

return s1;

}

 

 

 

 

 

 

12.字符串函数(二)

字符串大小写比较      范围(相同范围进行对比),大小写(不区分大小写) 顺序(一样)

bool b = "abc".Equals("AbC", StringComparison.OrdinalIgnoreCase);

Console .Write (b);

 

字符串劈开//s.Split('|')  

(1)string s = "aa|bb|c"

string[] f = s.Split('|');   //是'' 而不是" "       ★分开的是数组,而不是字符串

foreach (string e in f)

Console.Write(e);

(2)//s.Split (new char[]{','},StringSplitOptions .RemoveEmptyEntries )

//RemoveEmptyEntries移除空的字符串数组元素  none 保留空的字符串数组元素。

string s = "aa,bb,cc,,dd";

string[] f=s.Split (new char[]{','},StringSplitOptions .RemoveEmptyEntries );

foreach (string e in f)

Console.WriteLine(e);

 

(3)

string s = "我是大评委  我是张三丰 我是王浑"; 

//string[] f = s.Split('我')只能劈开单个字符

string[] f = s.Split(new string[] { "我是" }, StringSplitOptions.RemoveEmptyEntries);

foreach (string e in f)

Console.WriteLine(e);

 

//可以劈开不确定的单个字符 即可以劈开任意个数的任意字符(劈开的个数和字符可以是任意的)

string s = "我是大评委  我大张三丰 我是王浑";

string[] f = s.Split(new char[]{'是','三'},StringSplitOptions.RemoveEmptyEntries);

foreach (string e in f)

Console.WriteLine(e);

 

(4)//字符串中是否有子串 是否有敏感字符串  s.Contains("社会") || s.Contains("和谐")

(1)string s = "我们的社会真和谐啊!!!";

if (s.Contains("社会") || s.Contains("和谐"))

Console.WriteLine("禁止出现敏感词汇");

 

 

 

 

 

 

 

(2)敏感词汇进行*掩藏

string s = "社会真和谐啊,构造和谐社会!!!";

if (s.Contains("和谐"))

{

            char[] f = s.ToCharArray();

            for (int i = 0; i < f.Length; i++)

            {

                if (f[i] == '和' && f[i+1]=='谐')

                {

                  f[i]='*';

                  f[i + 1] = '*';

                }

 

}

           

            string temp = new string(f);

            Console.WriteLine(temp);

            Console.ReadKey();

}

 

(5)全部小写

string s = "ChinaRen";

//字符串是不可变的,所以转换后的值通过返回值

Console.WriteLine(s.ToLower());

Console.ReadKey();

 

(6)去掉空格 Trim()去掉两边的空格 

s.TrimStart()去掉左边开始的空格 s.TrimEnd()去掉右边结尾的空格

string s = "      ab   cd       ";

Console.WriteLine("输出字符串的长度");

Console.WriteLine(s.Length);

Console.WriteLine("输出字符串");

Console.WriteLine(s);

 

string s1 = s.Trim();//去掉两边的空格(中间的不管)

Console.WriteLine("输出去掉空格后字符串的长度");

Console.WriteLine(s1.Length);

Console.WriteLine("输出去掉空格后的字符串");

Console.WriteLine(s1);

Console.ReadKey();

 

 

(7)//string.Join("|", values)

string[] values = { "aa", "bb", "cc" };

string s = string.Join("|", values);//用分隔符连接字符串成为数组。

Console.WriteLine(s);

 

(8)//s.Replace(oldstring,newstring ); 字符串替换  

string s = "高山|长江|黄河|北京";

s= s.Replace("|", ",");

Console.WriteLine(s); 高山,长江,黄河,北京

 

(9)//s.Substring(startIndex, length)  开始的索引  截取长度

string s = "高山|长江|黄河|北京";

s = s.Substring(3, 3);

Console.WriteLine(s);

 

//三元运算符   i==5?"是":"否"

int i = 5;

string s=(i==5?"是":"否");

Console.WriteLine(s);

 

string s = "高山|长江";

s = s.Substring(2,s.Length-2>5 ? 5:s.Length-2);    

// 或者 s = s.Substring(2,Math.Min(s.Length-2,5));

Console.WriteLine(s);

 

(10)//判断是否是E-mail

Console.WriteLine("请输入E-mail");

string eAd = Console.ReadLine();

string name="";

string filed="";

if ((!eAd.StartsWith("@")) && (!eAd.EndsWith("@")) && (eAd.Contains("@")))

{

  int starAt = eAd.IndexOf("@");

  name = eAd.Substring(0, starAt);

  filed = eAd.Substring(starAt);

}

Console.WriteLine("The Name is:{0}", name);

Console.WriteLine("The Address is:{0}", filed);

Console.ReadKey();

 

13.读取磁盘文本里的内容

string[] lines = System.IO.File.ReadAllLines("c:/1.txt", Encoding.Default);

 

 

14.变量的作用域(变量的作用域是变量声明的)

变量名就像试验实例容器的编号,在一个实验室中,编号不能重复。如果去了更高一级的实验室,就不能和下属的实验室的容易编号重复。只要不出实验室,不同实验室之间的容器编号可以重复。

两个平行的for和两个嵌套的for。

 

相关阅读 更多 +
排行榜 更多 +
找茬脑洞的世界安卓版

找茬脑洞的世界安卓版

休闲益智 下载
滑板英雄跑酷2手游

滑板英雄跑酷2手游

休闲益智 下载
披萨对对看下载

披萨对对看下载

休闲益智 下载