C#知识整理-语句

申明语句

关键字:var,const,ref
var关键字申明变量时需要赋值,null值不能作为值赋给
const关键字申明的变量不能再进行赋值
ref关键字申明表示引用另一个变量,值的改变也跟随引用一起
详细可见:
            string greeting = "Hello";
            int x = 1, y = 2;
            List<int> list;
            var flag = false;
            const string hello = "Hello";//hello 无法再赋值
            ref int refX = ref x;
            refX = 10;
            Console.WriteLine($"refX:{refX} | x:{x}");//refX:10 | x:10

 

异常处理语句

关键字:throw,try-catch-finally
throw 抛出一个自定义的异常
catch 可以提供多个catch子句
finally 当控件离开try块时,将执行finally块
复制代码
public class Statement
{
    private string name;
    public string Name
    {
        get => name;
        set => name = value ?? throw new ArgumentNullException(paramName: nameof(value), message: "Name Can Not Be Null");
    }
    public override string ToString() => $"Name:{name}";
}


var testClass = new Statement();
try {
    testClass.Name = null;
}
catch (Exception ex) {
    Console.WriteLine(ex.Message); //Name Can Not Be Null(Parameter 'value')
}
finally {
    testClass.Name = "test";
}
Console.WriteLine(testClass);//Name:test
复制代码

 

迭代语句

关键字:for,foreach,do,while
复制代码
            for (var i = 0; i < 3; i++) {
                Console.Write(i);
            }
            //output:012
            Console.WriteLine();

            List<int> list = new List<int>{ 1, 3, 5, 2, 4, 6 };
            foreach (var i in list)
            {
                Console.Write(i);
            }
            //output:135246
            Console.WriteLine();

            var j = 0;
            while (j < 3)
            {
                Console.Write(j);
                j++;
            }
            //output:012
            Console.WriteLine();
            j = 0;
            do
            {
                Console.Write(j);
                j++;
            } while (j < 3);
            //output:012
            Console.WriteLine();
            j = 3;
            do
            {
                Console.Write(j);
                j++;
            } while (j < 3);
            //output:3
            Console.WriteLine();
复制代码

 

选择语句

关键字:if,if-else,switch
复制代码
            DisplayMeasurement_Switch(-4);          // Output: Measured value is -4; too low.
            DisplayMeasurement_Switch(5);           // Output: Measured value is 5.
            DisplayMeasurement_Switch(30);          // Output: Measured value is 30; too high.


            DisplayMeasurement_If(-4);          // Output: Measured value is -4; too low.
            DisplayMeasurement_If(5);           // Output: Measured value is 5.
            DisplayMeasurement_If(30);          // Output: Measured value is 30; too high.
   
   
        static void DisplayMeasurement_Switch(int measurement) {
            switch (measurement)
            {
                case <0:
                    Console.WriteLine($"measured value is {measurement}; too low.");
                    break;

                case > 15:
                    Console.WriteLine($"measured value is {measurement}; too high.");
                    break;
                default: 
                    Console.WriteLine($"Measured value is { measurement}.");
                    break;
            }
        }
        static void DisplayMeasurement_If(int measurement)
        {
            if (measurement < 0)
            {
                Console.WriteLine($"measured value is {measurement}; too low.");
            }
            else if (measurement > 15)
            {
                Console.WriteLine($"measured value is {measurement}; too high.");
            }
            else
            {
                Console.WriteLine($"Measured value is {measurement}.");
            }

        }
复制代码

 

跳转语句

关键字:break,continue,return,goto
复制代码
    public class Jumping
    {
        public static void TestBreak() {
            int[] numbers = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
            foreach (int i in numbers)
            {
                if(i==3)
                {
                    break;
                }
                Console.Write(i);
            }
            Console.WriteLine();
            Console.WriteLine("TestBreak End");
        }
        public static void TestContinue()
        {
            int[] numbers = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
            foreach (int i in numbers)
            {
                if (i == 3)
                {
                    continue;
                }
                Console.Write(i);
            }
            Console.WriteLine();
            Console.WriteLine("TestContinue End");
        }
        public static void TestReturn()
        {
            int[] numbers = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
            foreach (int i in numbers)
            {
                if (i == 3)
                {
                    return;
                }
                Console.Write(i);
            }
            Console.WriteLine();
            Console.WriteLine("TestReturn End inside function");
        }
        public static void TestGoTo()
        {
            int[] numbers = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
            foreach (int i in numbers)
            {
                if (i == 3)
                {
                    goto end;
                }
                Console.Write(i);
            }
            end:
            Console.WriteLine();
            Console.WriteLine("TestGoTo End");
        }
    }
 
 
            //Jumping
            Jumping.TestBreak();
            /*
             * output: 
             * 12
             * TestBreak End
             */
            Jumping.TestContinue();
            /*
             * output: 
             * 12456789
             * TestContinue End
             */
            Jumping.TestGoTo();
            /*
             * output: 
             * 12
             * TestGoTo End
             */
            Jumping.TestReturn();
            Console.WriteLine();
            Console.WriteLine("TestReturn End");
            /*
             * output: 
             * 12
             * TestReturn End
             */
复制代码

 

Lock语句

关键字:lock
独占访问权限,最常见的就是单例模式中保证线程安全
复制代码
public class Singleton
{
    private static Singleton instance;
    private static readonly object lockObject = new object();

    public static Singleton Instance
    {
        get
        {
            if (instance == null)
            {
                lock (lockObject)
                {
                    if (instance == null)
                    {
                        instance = new Singleton();
                    }
                }
            }
            return instance;
        }
    }

    private Singleton() { }
}
复制代码

 

using语句

关键字:using
使用using需要调用实现IDisplsable接口的对象,跳出using语句块将自动执行dipose方法
最常见的使用就是使用Stream或DBConnection的时候
复制代码
using (var sw = new System.IO.StreamWriter(cs))
{
    sw.Write(toBeEncrypted);
}

using (OleDbConnection connection = new OleDbConnection(connectionString))
{
    //logics
}
复制代码

 

yield语句

关键字:yield return, yield break
在迭代器中使用yield语句提供下一个值或表示迭代结束
复制代码
foreach (int i in ProduceEvenNumbers(9)) { 
    Console.Write(i);
}
// output: 02468
Console.WriteLine();

int[] val = { 2, 3, 5, -1, 3, 4 };
Console.WriteLine(string.Join(" ", TakePositive(val)));
// output:2 3 5

static IEnumerable<int> ProduceEvenNumbers(int upto) { 
    for(int i = 0; i <= upto; i++) { 
        yield return i;
    }
}

static IEnumerable<int> TakePositive(IEnumerable<int> numbers) { 
    foreach(int i in numbers)
    {
        if (i > 0) 
            yield return i;
        else
            yield break;
    }
}
复制代码

 

 
posted @   Terry841119  阅读(6)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示