【C#基础】 可选参数调用、params、无参静态构造函数

C# 可选参数方法调用:

可选参数方法:

调用方式可以:

这样我们要是用age和grade的默认值这样我们就可以跳过不必要的 我们就可以指定year的值。

可选参数必须在所有必须参数之后

params可变参数一定要在最后一个

静态构造函数 没有修饰符

C#的新特征是可以给类写一个无参静态的构造函数,这种构造函数只执行一次。

编写静态构造函数的原因是,有一些静态的字段或属性在第一次使用类之前从外部初始化静态字段和属性

无参构造函数和静态构造函数可以存在同一个类中。

如果是只读成员,他就是一个不可变类型,其内容只能在初始化时设置这对于多线程非常有用,多线程可以访问用于不会改变的同一对象。因为内容不需要改变,所以不用同步。

不可变类型的一个例子就是string类。这个类没有定义任何允许改变其内容的成员。诸如Toupper(把字符串更改为大写)的方法是返回一个新的字符串。但传递到构造函数的原始字符串保持不变。

1:匿名函数只是一个继承自Object且没有名称的类,该类从初始化器中推断,类似于隐式类型化的变量。

原文地址:https://www.cnblogs.com/SignX/p/10989073.html

时间: 2024-10-06 12:16:27

【C#基础】 可选参数调用、params、无参静态构造函数的相关文章

子类如果不实例化则不会调用它自身的静态构造函数

using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication6 { class Program { static void Main(string[] args) { #region 如果注释掉, 则Stat2.Instance为null 报错 Stat1.DoSth(); Stat2 st2 = new Stat2(); #en

mybatis调用存储过程 无参、带有输入输出参数,输出游标类型的 存储

存储过程在小公司用的不多,但是如果业务比较复杂或者性能要求比较苛刻的时候存储过程就派上用场了,ibatis的前期的一些版本貌似不支持存储过程因此我选择了mybatis来做实验. 1.无输入和输出参数的存储过程,我写了一个比较简单的,需要注意的是Oracle无参存储过程不能写括号 [sql] view plain copy CREATE OR REPLACE Procedure cascadeoperation As Begin Delete From teacher Where id=1; Up

子类构造函数会默认调用父类无参构造函数

1.调用父类无参构造函数是默认的! 子类的构造方法默认都去访问了父类的无参构造方法:在子类中的构造方法后都有一行默认语句 base() 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 class Fu {   public Fu()     {         Console.WriteLine("fu");     } } class Zi : Fu {     public Zi()         : base()//不管是否显式调用,控制台都会输出fu

c#之有参和无参构造函数,扩展方法

例如在程序中创建 Parent类和Test类,在Test有三个构造函数,parent类继承Test类,那么我们可以在Test类自身中添加 扩展 方法吗? 答案:是不可以的.因为扩展方法必须是静态的,且静态方法是不存在构造函数的. 先看一段代码: public class Test { public Test() { Console.WriteLine("这是无参的构造函数"); } public Test(string name) { Console.WriteLine(string.

java newInstance() 的参数版本与无参数版本详解

newInstance() 的参数版本与无参数版本详解 博客分类: Core Java 通过反射创建新的类示例,有两种方式: Class.newInstance() Constructor.newInstance() 以下对两种调用方式给以比较说明: Class.newInstance() 只能够调用无参的构造函数,即默认的构造函数: Constructor.newInstance() 可以根据传入的参数,调用任意构造构造函数. Class.newInstance() 抛出所有由被调用构造函数抛

你欺骗了我,可选参数必须位于所有参数最后

前言 有时候不得不感叹中国的文化确实是博大精深,你稍有不慎就会误入歧途,到最终迷茫过后,回过头来再看,哦 ,原来是这个意思,所以说每一字每一句都得仔细斟酌,为什么要这样说,请看我以为的! 话题 在控制台中写一个方法如下 1 static int OptionParam(int a = 0, int b, int c) 2 { 3 return a + b + c; 4 } 然后再控制台调用方法  Console.WriteLine(OptionParam(0, 1, 2)); 进行输入,很显然会

java中c#中statc 静态调用不同之处、c#的静态构造函数和java中的构造代码块、静态代码块

1.java和c#静态成员调用的不同之处 static 表示静态的,也就是共享资源,它是在类加载的时候就创建了 java中   可以通过实例来调用,也可以通过类名.成员名来调用,但是一般最好使用类名.成员这个方式,因为静态成员是属于类的,并不是属于具体的对象 c#中     只能通过类名.成员调用,并不能 用实例来进行调用 2.c#的静态构造函数和java中的构造代码块.静态代码块 c# 静态构造函数的特点:        1)静态构造函数不需要手动调用,系统自动调用        2)静态构造

c# 方法参数(传值,传引用,ref,out,params,可选参数,命名参数)

 一.方法参数的类型----值类型和引用类型 当方法传递的参数是值类型时,变量的栈数据会完整地复制到目标参数中即实参和形参中的数据相同但存放在内存的不同位置.所以,在目标方法中对形参所做的更改不会对调用者的初始变量产生任何影响. 当方法传递的参数是引用类型是,只是将变量的引用复制到目标参数中,实参和形参的引用指向内存中的同一位置.所以,在目标方法中对形参所做的更改会影响调用者的初始变量. 二.一些特殊的方法参数 1.引用参数---ref (使值类型的变量做方法参数时也可以传引用) 一些数据类型(

父类不含无参构造方法子类构造方法必须显式调用

一直不知道怎么取这个标题... 前两天发现我父类中定义了一个带参构造方法,然后子类继承后构造方法必须先调用父类方法带参构造方法,方法调用为super(参数,...). 然后我就上网查,可能关键字没搞对..哈哈...一直没明白,后来发现,如果父类含有不带参构造方法,那么子类就不需要上述操作. 那么为什么呢? 先说下类实例化的过程,也就是new一个对象的时候 首先默认运行的是类中无参的构造方法(这个可能在实例化过程java会为每一个类自动创建的),这是java默认首先运行的: 当然如果你重写无参的了