在c#中:
public class SomeClass
{
int x;
int y;
SomeClass (int x, int y)
{
this.x = x;
this.y = y;
}
}
有没有简单的方法来创建新的SomeClass而不设置x和y 我们有默认值,如果我设置值,则将其他值设置为 默认值?
答案 0 :(得分:4)
当然,使用C#6,您可以使用auto-implemented properties:
public class SomeClass
{
public int X { get; } = 123;
public int Y { get; } = 456;
public SomeClass(){ }
public SomeClass(int x, int y)
{
this.X = x;
this.Y = y;
}
}
当然你需要一个无参数构造函数。
如果您改为表示该类型的默认值,则自动完成(数字类型为0)。
答案 1 :(得分:2)
...不确定
new SomeClass(default(int), default(int))
或者更简单:
new SomeClass(0, 0)
int
的默认值始终为0
。所以即使你用无参数构造函数定义它:
public SomeClass() { }
这些int
班级成员仍默认为0
。
答案 2 :(得分:1)
您需要定义无参数构造函数:
public class SomeClass
{
int x;
int y;
public SomeClass {}
public SomeClass (int x, int y)
{
this.x = x;
this.y = y;
}
}
创建像:
这样的对象时var someClass = new SomeClass();
x
和y
都会使用默认值初始化,默认值为0.
如果您不想这样做,可以通过传递给已经声明默认值x
和y
的构造函数来处理这个问题,正如David已经指出的那样。
答案 3 :(得分:0)
默认构造函数会自动执行此操作。 您可以在构造函数中使用可选参数。
Read more on named and optional parameters.
<script id="carousel-template" type="text/x-handlebars-template">
<div class="topProducts__slider">
{{#each products}}
<div class="topProducts__slide">
<a href="{{link}}" class="ga-ip" data-ip-position="top products slider" data-ip-name="{{title}}">
<img src="https://i1.adis.ws/i/jpl/jd_{{plu}}_a?qlt=80&w=250&h=250&v=2" />
<h4>{{title}}</h4>
<p class="slideDesc">{{desc}}</p>
<p class="slidePrice">£{{price}}</p>
</a>
</div>
{{/each}}
</div>
</script>
您可以将其称为
public class SomeClass
{
// You can also write this as
// public SomeClass(int x=default(int), int y=default(int)) if you do
// not want to hardcode default parameter value.
public SomeClass(int x=0, int y=0)
{
this.X = x;
this.Y = y;
}
}
答案 4 :(得分:0)
使用无参数构造函数。
由于必须使用new
关键字以某种方式创建实例,因此您可以在类中使用无参数构造函数。
public SomeClass ()
{
x = 0;
y = 0;
}