2025年C中的条件操作符,空接合,应用参数(ref),输出参数(out),递归与重载

C中的条件操作符,空接合,应用参数(ref),输出参数(out),递归与重载C 中的条件操作符 空接合 应用参数 ref 输出参数 out 递归与重载 1 条件操作符 可以用来取代 if else 语句来选择两个值中的一个 格式如下 condition consequence

大家好,我是讯享网,很高兴认识大家。

C#中的条件操作符,空接合,应用参数(ref),输出参数(out),递归与重载

1.条件操作符:可以用来取代if-else语句来选择两个值中的一个。格式如下:
condition ?consequence :alternative
条件操作符是三元操作符,因为它需要三个参数。类似与逻辑操作符,条件操作符也支持短路求值。如果condition的值为true,那么条件操作符只求值consequence,否则只求值alternative

a = (a == 2) ? 1 : 2; 

讯享网

这里的作用时交换数据。首先检查a当前的值是否为2。括号里(condition)的判断如果为true,那么条件操作符?会返回(consequence)1。如果为false,那么就返回(alternative)2。但是与if语句不同,条件操作符的结果必须付给某个变量,不能单独作为一个语句使用。

2.空接和:空接合操作符 ?? 能简单的表示如果这个值为空,就使用另一个值。格式如下:
expression1 ?? expression2
如果expression1不为null,就返回expression1的值,不对另一个表达式求值。如果expression1求值为null,就返回expression2的值。

讯享网string name = Inputname ?? "anonymous"; 

3.应用参数(ref)

 static void Main() { string a = "A"; string b = "B"; Print(ref a, ref b); Console.WriteLine($@"a=""{ a}"", b = ""{ b}"""); } static void Print(ref string x, ref string y) { string temp = x; x = y; y = temp; } 
讯享网结果为 a="B",b="A" 

这是通过传应用的方式来传递变量。如果被调用的方法将参数指定为ref,那么调用者在调用这个方法的时候,提供的实参应该是附加了ref前缀的变量(而不是值)。这样就指定了目标方法可以对它接收的任何ref参数进行重新赋值。但是应该对传引用的变量进行初始化,因为目标方法可能直接从ref参数读取数据而不是先对其赋值。总之就是为现有的变量分配了参数名,而不是创建新变量并将实参的值复制给它。


讯享网

4.输出参数(out)

 static void Main() { int a; int b = 10; a = Print(7, 3, out b); Console.WriteLine("7/3={0}....{1}", a, b); } static int Print(int x,int y,out int z) { int a; a = x / y; z = x % y; return a; } 
讯享网结果为 7/3=2...1 

out参数在功能上和ref参数完全一致,唯一的区别就是,如果参数被标记为out,编译器会核实在方法所有正常返回的代码路径中,是否都对该参数进行了赋值。可以通过声明一个或多个out参数来克服方法只有一个返回值的限制。

5.递归:通俗一点来讲就是一个方法调用它自身。

 class Program { static void Main(string[] args) { int a = RecursiveClass.Recursive(6); Console.WriteLine("6的阶乘为" + a); } } class RecursiveClass { public static int Recursive(int n) { if (n == 0) { return n = 1; } return n = n * Recursive(n - 1); } } 
讯享网结果为 6的阶乘为720 

不过使用递归需要注意无限递归。假如方法持续地调用自身,永远都到不了结束递归的位置,就会发生无限递归。

6.方法的重载:方法重载是一种操作性的多态。说白了就是一个类里面允许存在出现名字相同的但是参数不同的多个方法。

 class Program { static void Main(string[] args) { int a = PrintClass.Add(1, 2); int b = PrintClass.Add(2.2f, 2); int c = PrintClass.Add(1, 2, 3); Console.WriteLine("a={0} b={1} c={2}", a, b, c); } } class PrintClass { public static int Add(int x, int y) { return x + y; } public static int Add(float x, int y) { return (int)(x + y); } public static int Add(int x, int y, int z) { return x + y + z; } } 
讯享网结果为 a=3 b=4 c=6 
小讯
上一篇 2025-03-25 11:53
下一篇 2025-03-27 15:28

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/58933.html