2011-11-24 11 views
2

我不得不定义很多领域,我不能做到这一点,如:为什么这个语法错了?不能使用get和set超过一个属性线

public double d1, d2, d3, d4, d5, d6 {get;set;} //does not work 

相反,我所要做的

public double d1 { get; set; } public double d2 { get; set; } //and so on 

,但在私人领域,我们有:

private double d1, d2, d3, d4 = 0; //Works 

我不能得到它,为什么它不工作。也许somone可以解释一下吗?有没有办法?

更新: 这似乎很多复制粘贴的让我拧我的知识和忘记场&属性之间的区别。无论如何,我的意思是一切应该是属性

+1

我想代码的第三行只设置D4为0,其余将保持为空。我认为你应该尝试做双d1 {get; set;},d2 {get;设置;} ...等等。 :) – Nathan

+2

因为他们是价值类型,他们实际上0.0无论如何,但好点。 –

回答

7

属性是函数调用,你不能以这种方式给它们一个默认值。改为使用类构造函数或其他函数。

这是一个在Visual Studio中快速输入的快速提示。类型字段:

public int a; 
public int b; 
public int c; 
public int d; 

然后键入{ get; set; }并且将其剪切到剪贴板CTRL + X

选择所有分号从上到下保持ALT键和鼠标左压在一起

然后粘贴CTRL + V:TA-DA!

public int a { get; set; } 
public int b { get; set; } 
public int c { get; set; } 
public int d { get; set; } 
+0

WoW我正在使用PC haha​​大约20年:D我不知道在选择时保持ALT! –

+0

+1,节省时间! –

+2

或者使用代码片段 - 键入道具然后选项卡两次 - 应自动扩展为属性。 – Paddy

2

这是微软设计语法的方式......
这就像问我为什么离开它的窗口的苹果。回答:重力电力这样工作...
=)

3

场(int x)和性能(int X { get; set; })是不同的东西。你不能在同一个语句中混合两种类型的声明。

7

在第一行会有一个不明确的地方;你想d1d5是属性或字段(这是两个不同的东西)。为了避免这个问题,它是不允许的。


注意以下:

double field; 
double property {get; set;} 
1

我不觉得高兴的是,这些语句的工作:

private double d1, d2, d3, d4 = 0; 

我认为的代码是难以阅读。我个人更喜欢“一个变量 - 一条线”,所以我没有麻烦

public double d1, d2, d3, d4, d5, d6 {get;set;} 

不起作用。

这是语言的语法。

1

对不起朋友,你必须做很多复制和粘贴。

4

从C#语言规范

1.6.7.2属性

属性是字段的自然扩展。两者都被命名为具有关联类型的成员,并且访问 字段和属性的语法是相同的。 但是,与字段不同,属性 不表示存储位置。相反,属性具有访问者 ,它们指定在读取值为 或写入时要执行的语句。

1

类型propf然后点击tap或prop并点击tap。 认为这是最简单的方法。 我用这很多我的自我。

与propf你会得到

private int myVar; 

    public int MyProperty 
    { 
     get { return myVar; } 
     set { myVar = value; } 
    } 

与道具你会得到

public int MyProperty { get; set; }; 
相关问题