Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#中向变量传递参数的较短方法?_C# - Fatal编程技术网

C#中向变量传递参数的较短方法?

C#中向变量传递参数的较短方法?,c#,C#,假设我有如下代码: public class Person { public string Name, Job; public int Age; public Person(string name, int age, string job) { Name = name; Age = age; Job = job; } } 是否有一种较短的方法来执行此操作,而不是对每个参数执行“[Variable]=[Arg

假设我有如下代码:

public class Person
{
    public string Name, Job;
    public int Age;
    public Person(string name, int age, string job)
    {
        Name = name;
        Age = age;
        Job = job;
    }
}
是否有一种较短的方法来执行此操作,而不是对每个参数执行“
[Variable]=[Argument]
”?

使用对象初始值设定项 由于属性是公共的,因此可以在实例化之后立即设置它们:

var person = new Person
{
    Name = value1,
    Age = value2,
    Job = value3
}
课程本身将是:

public string Name, Job {get; set;}
public int Age {get; set;}
public Person()
{
}

注意不要使用公共字段

因为没有检查,为什么不在构造函数中省略参数,将字段转换为属性,并将其init留给调用代码呢

Person person = new Person()
{
    Name = "elseytd",
    Age = 24,
    Job = Jobs.Programmer
};

3行最简单的代码可能太多了?您应该使用属性而不是公共字段though@TimSchmelter这也可能是一个具有100个属性的类的简化示例。将变量名更改为N,a&J,将参数名更改为N,a&J。@fubo:我从未见过(设计良好的)类的构造函数中需要100个参数,如果它们只需在VS中添加一个功能即可自动为您生成构造函数,这将是向前迈出的一大步。(基本上:使用“对象初始值设定项”)这难道不会导致更多的代码(每次实例化都需要指定字段名和值)每次都会重复构造函数的内容吗。。如果所有参数都是必需的,它还可能导致无法正确实例化。@PaulF,它最终是相同数量的代码,但在类的构造函数中要少得多,而类的构造函数可能只是一个DTO。它还为初始化添加了一些明确性,这意味着您100%不会因为错误而交换两个字符串。@mjwills对于程序员来说,还有一件很好的事情要做,.Great idea@AgentFire!