C#参数的重载

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#参数的重载相关的知识,希望对你有一定的参考价值。

namespace ConsoleApplication2

public class Student

public Student(int _number,char _name)

number = _number;
name = _name;

public int number = 0;
public char name =' ';

class Program

public static void Create(Student p)

List<Student> stu = new List<Student>();

stu.Add(new Student("1,honey"));
stu.Add(new Student("2,lover"));

for (int i = 0; i < 5; i++)

Stu.Add(new Student(int.Parse(Console.ReadLine()),Console.ReadLine()));
//输入字符串的格式不正确
foreach (Student s in stu)

Console.WriteLine(s);


static void Main(string[] args)

Student w = null;
Create(w);




大家帮忙看看注释说的,如果只用一个参数就正确了,两个参数就不知道哪里出错了
我改成了string _name这个,还是提示字符串的格式不正确
会不会是new Student()里面不能这样用函数啊?

public class Student

public Student(int _number, string _name)

number = _number;
name = _name;

public int number = 0;
public string name ="";

class Program

public static void Create(Student p)

List<Student> stu = new List<Student>();

stu.Add(new Student(1,"honey"));
stu.Add(new Student(2,"lover"));

for (int i = 0; i < 5; i++)

stu.Add(new Student(int.Parse(Console.ReadLine()), Console.ReadLine()));
//输入字符串的格式不正确
foreach (Student s in stu)

Console.WriteLine(s);


static void Main(string[] args)

Student w = null;
Create(w);


这样写才对,里面有好几处错误
1.传参数类型要对应,你前面一个用char型后面用string类型
2.Stu.Add(new Student(int.Parse(Console.ReadLine()),Console.ReadLine()));中的Stu没有定义S要小写
3. stu.Add(new Student("1,honey"));
stu.Add(new Student("2,lover"));
你把类型"1,honey"整个当成了一个参数,所以会说没有一个参数重载,要写成 stu.Add(new Student(1,"honey"));
stu.Add(new Student(2,"lover"));
参考技术A public class Student

public Student(int _number,string _name)

number = _number;
name = _name;

public int number = 0;
public string name =" ";
参考技术B ReadLine返回的是String不是char,要转型 参考技术C 400

C#方法重载

什么是方法重载?

  一般情况下,在调用方法时,必须匹配方法的签名。这表明,需要有不同的方法来操作不同类型的变量。

       方法重载允许创建多个同名方法,每个函数可使用不同的参数类型。(即:方法名相同,参数个数或类型不同)

方法重载的栗子:

/// <summary>
/// 简单计算器:默认计算两个值相加
/// </summary>
/// <param name="value1"></param>
/// <param name="value2"></param>
/// <returns></returns>
public static double Compute(double value1, double value2)

    return value1 + value2;

/// <summary>
/// 计算类型
/// </summary>
public enum ComputeType

    [Description("加")]
    Plus,
    [Description("减")]
    Minus,
    [Description("乘")]
    Times,
    [Description("除")]
    Divided

/// <summary>
/// 简单计算器:计算两个值的运算
/// </summary>
/// <param name="value1"></param>
/// <param name="value2"></param>
/// <param name="computeType">计算类型</param>
/// <returns></returns>
public static double Compute(double value1, double value2, ComputeType computeType)

    switch (computeType)
    
        case ComputeType.Plus:
        default:
            return value1 + value2;
        case ComputeType.Minus:
            return value1 - value2;
        case ComputeType.Times:
            return value1 * value2;
        case ComputeType.Divided:
            return value1 / value2;
    

// 默认计算
var result = Compute(520, 1314);
// 计算方法的重载
var result2 = Compute(520, 1314, ComputeType.Times);

 

以上是关于C#参数的重载的主要内容,如果未能解决你的问题,请参考以下文章

C# 匹配的最佳重载方法...有一些无效参数

C#视频方法重载函数重载传值

最佳重载方法匹配有一些无效参数 C#

C#传智:方法及参数重载(第7天)

在 C# 4.0 中是不是应该使用重载或可选参数声明方法?

C# 4 中的重载分辨率和可选参数