精华内容
下载资源
问答
  • C# 构造函数重载的几种方式

    千次阅读 2019-01-11 00:54:22
    今天工作中遇到了点小麻烦,关于构造函数重载的问题,以前方法重载的时候直接使用相同的函数名传入不同的参数即可。如下面代码: 1 public class UserData 2 { 3 4 5 public bool UpdateUser(string username, ...

    今天工作中遇到了点小麻烦,关于构造函数重载的问题,以前方法重载的时候直接使用相同的函数名传入不同的参数即可。如下面代码:

     1     public class UserData
    2 {
    3
    4
    5 public bool UpdateUser(string username, string password, int age, int sex,int id)
    6 {
    7 return true;
    8 }
    9
    10 public bool UpdateUser(string username,int id)
    11 {
    12 return UpdateUser(username, "", 0, 0,id);
    13 }
    14 }

    当构造函数重载时使用上面的方法就不行了,会报错。如图:

    其中原因我就不多解释了,构造函数是用来实例化的。经过几次尝试终于找到了办法。

     1     public class User
    2 {
    3 /// <summary>
    4 /// 初始化一个空的用户类实例。
    5 /// </summary>
    6 public User()
    7 {
    8
    9 }
    10
    11 /// <summary>
    12 /// 初始化一个包含用户信息的用户类实例。
    13 /// </summary>
    14 /// <param name="username">用户名</param>
    15 /// <param name="password">密码</param>
    16 /// <param name="age">年龄</param>
    17 /// <param name="sex">性别</param>
    18 public User(string username, string password, int age, int sex)
    19 {
    20 this._username = username;
    21 this._password = password;
    22 this._age = age;
    23 this._sex = sex;
    24 }
    25
    26 /// <summary>
    27 /// 初始化一个包含用户名和密码的用户类实例。
    28 /// </summary>
    29 /// <param name="username"></param>
    30 /// <param name="password"></param>
    31 public User(string username, string password)
    32 : this(username,password,0,0)
    33 {
    34 }
    35
    36 private int _id;
    37 private string _username;
    38 private string _password;
    39 private int _age;
    40 private int _sex;
    41
    42
    43 public int Id
    44 {
    45 get { return _id; }
    46 set { _id = value; }
    47 }
    48
    49 public int Sex
    50 {
    51 get { return _sex; }
    52 set { _sex = value; }
    53 }
    54
    55 public int Age
    56 {
    57 get { return _age; }
    58 set { _age = value; }
    59 }
    60
    61 public string Password
    62 {
    63 get { return _password; }
    64 set { _password = value; }
    65 }
    66
    67 public string Username
    68 {
    69 get { return _username; }
    70 set { _username = value; }
    71 }

     

    展开全文
  • C#构造函数 和 方法重载

    千次阅读 2020-04-10 16:11:23
    构造函数(一本正经的讲构造函数 如果想看不正经的往下翻看方法重载) 方法名称与类名相同,没有返回值类型,连void都没有 用作给类的对象初始化 一个类中可以有多个构造 如果手动添加一个构造,系统不会自动生成无参...

    构造函数要点:

    1.适用场景: 构造函数的主要作用是在创建对象(对类进行New实例化)时初始化对象,给对象附初值

     实例化New一个类时其实就是调用了这个类的构造函数 Person p=new Person(); 这里就是调用了Person类的构造函数Person()方法,括号内是构造函数的参数,这里是无参的。

    2.  方法重载:一个方法可以有多个构造函数 参数列表必须不同(参数个数、类型、顺序),一个类需要手动添加至少一个构造函数,如果定义类时没有声明构造函数,系统会自动生成无参构造函数。 提供多个构造函数的目的是为了实例化类时根据不同的需求创建不同的实例对象。

    3. 返回值:构造函数没有返回值;(没有 int,string等,连void都没有)

    4. 函数名称:构造函数名称必须与类同名。 

     

    首先我们看看构造函数声明,重载以及继承调用的代码:


    class Person
            {
                public Person(string name, int age)             
                {
                    this.Name = name;
                    this.Age = age;
                }
                  public Person(string name, int age, char sex)       //构造函数的重载
                            : this(name, age)
                    {
                    this.Sex = sex;
                  }
                    public Person()                                 //构造函数的重载
                {}
        }


        class Chinese : Person
        {
             public Chinese (string name ,int age ,char sex):base (name,age,sex )        //构造函数的继承调用
                { }
        }

    但是有些细心地人就会问那么下面为什么还有这段代码呢,


     public Person(string name, int age, char sex) : this(name, age)  //构造函数的重载
     {
          this.Sex = sex;
     }

     public Person()  //构造函数的重载
     {

     }
         这个其实是构造函数的重载。

    重载:函数名不变,只改变参数的个数或参数的类型

    作用:重载构造函数的主要目的是为了给创建对象提供更大的灵活性,以满足创建对象时的不同需求,如上,可以传0个参数也可以传2个,当然也可以传3个参数。

    构造函数this用于限定被相同的名称隐藏的成员,不要this也是可以的,但是在属性定义中的索引器中就是不可或缺的

     

    下面我们在介绍构造函数的继承调用,代码如下:


    class Chinese : Person
    {
             public Chinese (string name ,int age ,char sex) : base (name,age,sex )        //构造函数的继承调用
             { }
    }
    这段代码是构造函数的继承调用,首先是类的继承,class Chinese : Person创建一个类Chinese 继承Person类,下来是在类Chinese 声明一个构造函数,和父类Person不同的是后面有个base(name,age,sex),这其实就是继承调用,base指向的是父类Person,然后子类Chinese继承父类Person的name,age,sex。
    而因为在Person类中构造函数重载分别有0,2,3个参数,所以在main函数里面可以有这几种创建对象的方式:
    Person p1=new Person();
    //Person p1=new Person("小明",18);
    //Person p1=new Person("小明",18,'男')
    这几种编译都可以通过。

     

    定义一个Person类,之中有string类型的姓名,int类型的年龄和枚举类型的性别(male,female)

    1004748-20160827160048147-401127878.png

     

    创建两个构造函数

    构造函数用作给对象附初值 在新建一个类的对象时都会调用类的构造函数

    例如 Person p=new Person(); 括号内就是构造函数的参数

     

     一个方法可以有多个构造函数 参数列表必须不同(方法重载)

    调用有三个参数的构造函数为Person类对象附初值Person p = new Person("斯沃",18,0);

    调用无参方法Person p1=new Person();

     

    比如呢 计算器计算加法 两个整数也能相加, 两个小数也能相加, 一个整数一个小数也能相加

    为了实现如上功能,我们该怎么办呢

    我们可以写四个方法,分别叫做SumIntAndInt(int a,int b)  SumIntAndDouble  SumDoubleAndInt  SumDoubleAndDouble

    啊四个方法,是不是看起来很高端,但是并没有什么卵用 首先名字很长并且都要是不同的名字,其次调用起来的话并不知道传进去什么参数,该用什么类型, 那么 该怎么办呢,怎么办呢

    其实C#里可以定义多个方法名相同的方法 这就是方法的重载

    方法重载

    在同一个类里 方法名称相同,方法参数列表不同(个数 类型 顺序), 与方法的返回值没有任何关系

     

    对对对对对对 如你所见他并不会报错

    但是不能定义两个参数列表完全相同的方法,只要类型或者个数或者顺序不一样都可以成功

    如你所见 不抵了 因为参数列表完全相同 就算返回值类型不同也不行 返回值类型跟方法重载没有半毛钱关系!!

     

    神奇的是这样就可以了!

    然后我们在Main方法里就可以调用这四个重载的方法

    比如Sum(1,2)   Sum(1.1,2)  Sum(1,2.1)  Sum(1.1,2.2)

     他都可以运行然后返回结果是不是很神奇是不是很鬼畜

    嗯就是这样

    展开全文
  • 构造函数 static void Main(string[] args) { SE engineer = new SE(); engineer.Age = 25; engineer.Name = "艾边成"; engineer.Gender = Gender.male; engineer.ID = "112"; engineer.Popularity = 100; ...

    构造函数

    static void Main(string[] args)
    {
            SE engineer = new SE();
    
            engineer.Age = 25;
            engineer.Name = "艾边成";
            engineer.Gender = Gender.male;
            engineer.ID = "112";
            engineer.Popularity = 100;
            Console.WriteLine(engineer.SayHi());
    }
    
    
    
    
    //public class SE       
       //  public SE() {}
    //}
    
    

    构造函数是类中一个特殊的方法

    构造函数名与类名相同,不返回任何值,主要完成对象的初始化工作

    public class SE
    {
        public SE() 
        {
            this.ID = "000";
            this.Age = 20;
            this.Name = "无名氏";
             ……     
         }
    }
    

    使用构造函数

    构造函数

    每次创建类的示列(new)时会被调用

    new关键字

    可以示列化一个新的对象

    SE engineer = new SE();
    
    

    指定调用某个带参数的构造函数

    SE engineer = new SE("112", "艾边成", 25, Gender.male, 100);
    
    

    类的隐式构造函数

    示列

    构造两个程序员对象

    public class SE
    {
           public SE (string id, string name, 
                             int age, Gender gender,int popularity){//…省略}
           //省略字段、属性
    }
    
    

    每个类都默认有一个无参数的构造函数,一旦手动添加了构造函数,系统就不会再给类添加无参构造函数

    方法的重载

    public class SE
    {
        //带参构造函数
        public SE (string id, string name, 
                           int age, Gender gender,int popularity) 
        {
                 this.ID = id;
                 this.Name = name;
                 this.Age = age;
                 this.Gender = gender;
                 this.Popularity = popularity;
        }
        //无参构造函数
        public SE() { }
    }
    

    方法的重载:

    方法重载:同一个类中,方法名相同,参数列表不同(参数类型不同、参数个数不同

    对象的交互

    public class RemoteControl
    {
            //开机
            public void TurnOn(Television tv)
            {
                tv.Open(); //调用电视机对象的开机方法
            }
            //关机
            public void TurnOff(Television tv) 
            {
                tv.TurnOff(); //调用电视机对象的关机方法
            }
            //换台
            public void ChangeChannel(Television tv) 
            {
                Console.Write("请输入频道号:");
                string channelNo = Console.ReadLine();
                tv.Change(channelNo);  
    

    在这里插入图片描述

    展开全文
  • C#构造函数的声明、重载与继承调用

    千次阅读 2015-06-03 21:26:14
    c#则属于面向对象的编程语言,相信看此片博客的同伴们应该已经了解面向对象以及他的三大特性:多态,封装,继承了吧,今天小智对此也不做太多介绍了,小智今天要跟大家分享的是c#构造函数的定义,重载以及继承。...

    今天小智终于开始写C#的博客了,c语言属于面向过程的编程语言,而c#则属于面向对象的编程语言,相信看此片博客的同伴们应该已经了解面向对象以及他的三大特性:多态,封装,继承了吧,今天小智对此也不做太多介绍了,小智今天要跟大家分享的是c#中构造函数的定义,重载以及继承。

        首先我们要了解一下构造函数有什么用?

    1.构造函数的主要作用是在创建对象(声明对象)时初始化对象,一个类定义至少要有一个构造函数,如果定义类时没有声明构造函数,系统会提供一个默认的构造函数

    首先我们看看构造函数声明,重载以及继承调用的代码:

    class Person
        	{
            	public Person(string name, int age)             
            	{
               	 this.Name = name;
               	 this.Age = age;
            	}
          		public Person(string name, int age, char sex)       //构造函数的重载
         	       		: this(name, age)
         	   	{
            	    this.Sex = sex;
          		}
          	  	public Person()                                 //构造函数的重载
            	{}
    	}
    	class Chinese:Person
    	{
    		 public Chinese (string name ,int age ,char sex):base (name,age,sex )        //构造函数的继承调用
    	        { }
    	}



    构造函数的声明有几点要求:1.没有返回值;(没有void,int,string等)

    2.构造函数名称必须与类同名。(必须是Person)

    也就是public Person(int age ,string name)

    但是有些细心地人就会问那么下面为什么还有这段代码呢,

    public Person(string name, int age, char sex)       //构造函数的重载
         	       		: this(name, age)
         	{
           this.Sex = sex;
          }
          	 public Person()                                 //构造函数的重载
            {}

         这个其实是构造函数的重载。

    重载:函数名不变,只改变参数的个数或参数的类型

    作用:重载构造函数的主要目的是为了给创建对象提供更大的灵活性,以满足创建对象时的不同需求,如上,可以传0个参数也可以传2个,当然也可以传3个参数。

    在构造函数this用于限定被相同的名称隐藏的成员,不要this也是可以的,但是在属性定义中的索引器中就是不可或缺的。

    下面我们在介绍构造函数的继承调用,代码如下:

    class Chinese:Person
    	{
    		 public Chinese (string name ,int age ,char sex):base (name,age,sex )        //构造函数的继承调用
    	        { }
    	}

    这段代码是构造函数的继承调用,首先是类的继承,class Chinese :Person创建一个类Chinese 继承Person类,下来是在类Chinese 声明一个构造函数,和父类Person不同的是后面有个base(name,age,sex),这其实就是继承调用,base指向的是父类Person,然后子类Chinese继承父类Person的name,age,sex。
    而因为在Person类中构造函数重载分别有0,2,3个参数,所以在main函数里面可以有这几种创建对象的方式:
    Person p1=new Person();
    //Person p1=new Person("小明",18);
    //Person p1=new Person("小明",18,'男')
    这几种编译都可以通过。

    展开全文
  • 这就是C#中的函数重载,你可以发现在函数重载中的方法的名称相同,但它们的形参的个数,数据类型却不相同。这就可以说明构成函数重载是需要某种条件的。 函数重载的概念:在同一个作用域中,可以声明几个功能类似的...
  • C#构造函数重载:应用Fruit类,编写驱动程序,实现对构造函数的调用,并输出字段值。 2.来吧展示,代码如下: using System; namespace Experiment_3._3 { class Program { public class Fruit { public ...
  • c#构造函数重载

    2021-10-26 13:24:05
    构造函数在我们初始化新对象时自动调用,当我们不确定传入参数的数量时可以进行构造函数重载c#会自动匹配参数相同的构造函数。 如果该函数的构造函数有共同的操作,我们可以使用this(参数名)来让该构造函数...
  • C#构造函数(超详解,建议收藏!!!)

    千次阅读 多人点赞 2020-06-04 22:41:52
    什么是构造函数? 构造函数的作用? 构造函数的应用? 构造函数时应注意事项? 实例构造函数? 静态构造函数? 私有构造函数?
  • C#构造函数和析构函数 1.构造函数 类的构造函数是类的一个特殊的成员函数,当创建类的新对象时就会执行构造函数。默认的构造函数是没有任何参数,可以为构造函数设置参数,且构造函数的名称必须跟类名一样。 class...
  • using System; using System.Collections.Generic; using System.Linq; using System.Text;...namespace _0703_构造函数重载 { //构造函数:创建一个对象(实例化类)、可以为对象赋初始值 class Program ...
  • C#中的重载,重写,构造函数

    千次阅读 2018-03-31 11:19:19
    自我理解:重载:在同一类中,参数不同的同名函数,主要用于传入不同参数时执行执行不同的效果。例如:一对重载函数,一个参数传入字符串,另一个传入整数。using System.Collections.Generic; using System.Linq...
  • 前言:在前面的博文中,我介绍了C#中的构造函数,详情戳:C#中的构造函数详解,建议收藏!在本博文接下来的部分,我将对构造函数、析构函数等做一系列的补充,可谓是干货满满!话不多说,开始学习吧! 文章目录一、...
  • unity3d中C#构造函数重载

    千次阅读 2015-03-03 22:27:09
    构造函数的名字必须与类名同名,而不能由用户任意命名,以便编译系统能识别它并把它作为构造函数处理。它不具有任何类型,不返回任何值。 创建类时默认有构造函数 构造函数的任务是初始化类的实例,它本身...
  • 默认构造函数都从父类object继承了无参的构造方法。 1、类在初始化实例化对象(new)的时候将默认调用的是类中的默认构造函数(即无参的构造函数); 2、为方便初始化数据,通常会构造函数(即构造函数需要带参数,...
  • c#---构造函数

    2021-11-02 20:49:09
    构造函数语法 使用构造函数 实例构造函数 无参数构造函数 私有构造函数 示例 静态构造函数 备注 用法 示例 每当创建类或结构时,将会调用其构造函数。 类或结构可能具有采用不同参数的多个构造函数。 ...
  • C#构造函数中调用其他构造函数

    千次阅读 2019-06-22 18:14:42
    有时,在一个类中有几个构造函数,以容纳某些可选参数,这些构造函数包含一些共同的代码。例如,如下情况: Class Car { private string _description; private int _nWheels; public Car(string ...
  • C#构造函数用法

    千次阅读 2018-07-18 16:35:00
    1.实例构造函数 2.静态构造函数 3.私有构造函数 例: 创建一个类 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading....
  • C#构造函数重载

    千次阅读 2010-11-22 15:19:00
    所以C#构造函数重载相当于不同数量的参数方法重载。 using System; class Animal { public string _name; public string _color; public int _speed; public Animal() {...
  • 构造函数 构造函数就是一个对象的初始操作的函数,new对象()的时候调⽤,方法名必须与类一样,且没有...构造函数是可以重载的,如果想在执行当前构造函数之前,先执行构造函数:当前构造函数(…) : this(传实参) ...
  • PHP构造函数重载

    2021-03-25 10:27:43
    由于PHP是弱类型语言,因此函数的输入...因此基于这2点,注定了PHP中无法重载函数,(类似Javascript语言),也无法有构造函数重载。由于实现函数的重载对提高开发效率很有帮助,如果能象C#或者C++那样,那就非常...
  • c#构造函数构造函数的调用

    万次阅读 2015-12-01 16:53:07
    C#构造函数的特性一、 什么是C#构造函数?Construct,Function  C#构造函数是一种特殊的成员函数,它主要用于为对象分配存储空间,对数据成员进行初始化.  C#构造函数具有一些特殊的性质:  (1)C#构造...
  • C#构造函数

    2021-05-25 08:37:26
    引用类型的实例构造函数不能被继承(不过,可以通过 base 关键字调用父类的构造函数),它负责初始化类型的实例字段。对于静态字段,由静态构造函数负责。...如果类型没有定义任何构造函数C# 会生成一个无参实例构造...
  • 菜鸟的C#学习之旅——C#方法重载与函数重载

    千次阅读 热门讨论 2018-11-10 21:16:17
    函数重载 总结 重载 重载,简单说,就是函数或者方法有相同的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者方法。 重载的定义:函数名相同,函数的参数列表不同...
  • Csharp中Thread的四种构造函数

    千次阅读 2017-06-24 21:30:53
    带参数的构造函数 ... 使用的默认堆栈大小Thread(ParameterizedThreadStart)构造函数重载是线程的建议的堆栈大小。 如果一个线程出现内存问题,最可能的原因编程错误,例如无限递归。 详细请看: ...
  • C#构造函数(方法)的详细讲解

    千次阅读 2020-06-01 12:58:54
    C#构造函数(方法)的详细讲解 1、什么是构造(方法)函数? ​ 构造函数 ,是一种特殊的方法。主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。特别的一个...
  • C# 构造函数重载

    千次阅读 2010-09-14 13:44:00
    是关于构造函数重载!其实以前学校C ++ 的时候已经学过。但是现在再看C#的时候,虽然是一样的,但是还是有很多没明白。比如下面的一个问题还是经过调试后,才发现的。虽然问题不大,不过如果用手写的话,就会造成...
  • 1.构造函数和析构函数:对对象进行初始化和回收对象资源。对象生命周期以构造函数开始,以析构函数结束。构造函数、析构函数与所在类具有相同名字,析构函数名前有(~),析构函数自动释放对象所占空间。 构造函数...
  • There are reasons for this that are a bit complex to explain.""" # everything down here is a static variable, unlike in Java or C# where # declarations here are for what members a class has....
  • C#中的构造函数

    千次阅读 多人点赞 2019-09-02 16:42:58
    当我们需要对一个类中...显然很麻烦,使用构造函数可以简单很多: class Weapon { public int id; public string name; public int price; public Weapon() { Console.WriteLine("无参构造函数被调用"); ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 36,814
精华内容 14,725
关键字:

c#构造函数的重载

c# 订阅