C# 教程 在线

2376C# 循环

本篇文章没有案例,下面我给出一个循环配合数组的案例,供大家参考。

难的地方有注释。

大家也可以把案例复制到自己的VS文档里面去试验。

斐波那契数列。

using System;
class 测试
{
    static void Main(string[] args)
    {
        int N = 50;
        //由于数字太大,我只能用计算金融的decimal来作为类型
        decimal[] feiBo = new decimal[N];  //定义数组
        feiBo[0] = 1;    //C#数组从0开始!!!!
        feiBo[1] = 1;    //定义了前两项
        //while 循环,计算数组斐波那契数列的每一项
        int x = 2;
        while (x <= N - 1)
        {
            feiBo[x] = feiBo[x - 1] + feiBo[x - 2];
            x++;
        }
        //foreach遍历数组,具体用法请百度,这里不再赘述。
        foreach (decimal i in feiBo)
        {
            Console.WriteLine(i);
        }
        Console.ReadKey();
    }
}

2375C# 判断

?: 举例 下面是阶乘的递归算法,其中判断条件如果 num>0 则返回 num *Jc(num - 1),否则返回 1

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace jiecheng
{
    class jiecheng
    {
        public int Jc(int num)
        {
            
            return num > 0 ? num *Jc(num - 1):1;  //如果num>0则返回num *Jc(num - 1),否则返回1
        }
    }




    class excutejiecheng
  
    {
        static void Main(string[] args)
        {
            jiecheng n = new jiecheng();
            int result = n.Jc(Convert.ToInt16(Console.ReadLine()));
            Console.WriteLine("result is {0}",result);
            Console.ReadKey();
        }
    }
}

2374C# 运算符

C# 是用 <<(左移)>>(右移) 运算符是用来执行移位运算。

左移 (<<):将第一个操作数向左移动第二个操作数指定的位数,空出的位置补 0。

左移相当于乘. 左移一位相当于乘2;左移两位相当于乘4;左移三位相当于乘8。

x<<1= x*2
x<<2= x*4
x<<3= x*8
x<<4= x*16

同理, 右移即相反:

右移 (>>):将第一个操作数向右移动第二个操作数所指定的位数,空出的位置补 0。

右移相当于整除. 右移一位相当于除以 2;右移两位相当于除以 4;右移三位相当于除以 8。

x>>1= x/2
x>>2= x/4
x>>3= x/8
x>>4= x/16

因为位移比乘除速度快,对效率要求高,而且满足 2 的幂次方的乘除运方,可以采用位移的方式进行。

2373C# 运算符

可空类型修饰符 ?

引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空。

例如:string str=null; 是正确的,int i=null; 编译器就会报错。

为了使值类型也可为空,就可以使用可空类型,即用可空类型修饰符 ? 来表示,表现形式为 T?

例如:int? 表示可空的整形,DateTime? 表示可为空的时间。

T? 其实是 System.Nullable(泛型结构)的缩写形式,也就意味着当你用到 T?时编译器编译时会把T?编译成 System.Nullable 的形式。

例如:int?,编译后便是 System.Nullable 的形式。

三元(运算符)表达式 ?:

例如:x?y:z 表示如果表达式 x 为 true,则返回 y;如果 x 为 false,则返回 z,是 if{}else{} 的简单形式。

空合并运算符 ??

用于定义可空类型和引用类型的默认值。

如果此运算符的左操作数不为 null,则此运算符将返回左操作数,否则返回右操作数。

例如:a??b 当 a 为 null 时则返回 b,a 不为 null 时则返回 a 本身。

空合并运算符为右结合运算符,即操作时从右向左进行组合的。

如: a??b??c 的形式按 a??(b??c) 计算。

NULL 检查运算符 ?.

int? firstX = points?.FirstOrDefault()?.X;

从这个例子中我们也可以看出它的基本用法:如果对象为 NULL,则不进行后面的获取成员的运算,直接返回 NULL。

需要注意的是,由于 ?. 运算符返回的可以是 NULL,当返回的成员类型是 struct 类型的时候, ?.. 运算符的返回值类型是不一样的。

Point p = new Point(3, 2); 
Console.WriteLine(p.X.GetType() == typeof(int));        //true
Console.WriteLine(p?.X.GetType() == typeof(int?));      //true

2372C# 运算符

&,|,^ 除了用于位运算,还可以用于逻辑运算,分别对应与,或,异或。

^ 运算符针对整型类型和 bool 预定义了二元 ^ 运算符。 对于整型类型,^ 会计算其操作数的按位异或。 对于 bool 操作数,^ 计算其操作数的逻辑异或;即,当且仅当其一个操作数为 true 时,结果才为 true。

Console.WriteLine(true ^ false);  // 返回 true
Console.WriteLine(false ^ false);  // 返回 false
Console.WriteLine(true ^ true);  // 返回 false

| 运算符针对整型类型和 bool 预定义了二元 | 运算符。 对于整型类型,| 会计算其操作数的按位 OR。 对于 bool 操作数,| 会计算其操作数的逻辑 OR;即,当且仅当其两个操作数皆为 false 时,结果才为 false。

Console.WriteLine(true | false);  // 返回 true
Console.WriteLine(false | false); // 返回 false

& 运算符为整型类型和 bool 预定义了二元 & 运算符。 对于整型类型,& 计算其操作数的逻辑按位 AND。 对于 bool 操作数,& 计算其操作数的逻辑 AND;即,当且仅当其两个操作数皆为 true 时,结果才为 true。

Console.WriteLine(true & false);  // 返回 false
Console.WriteLine(true & true);   // 返回 true

其中&,|的运算结果与&&,||完全相同,但&&和||的性能更好。因为&&和||都是检查第一个操作数的值,如果已经能判断结果,就根本不处理第二个操作数。

比如:

bool a = true;               
bool b = false;              
bool c = a || b;

检查第一个操作数a时已经得出c为true,就不用再处理第二个操作数b了。