2010-08-13 42 views
1

我昨天發現我不能有一個使用名爲「類型」的字段的類,這可能是保留的。this.Type保留?應該報

儘管可以保留該字段,但如果它沒有定義爲公共字符串的Type字段,則仍然無法設置anyObject.Type。忽略任何getter和setter並直接跳轉到將YourObject更改爲「whatever」字符串。

試試這個給自己吧。定義一個類型字段並嘗試設置它。

這應該報告給Microsoft,因此將來沒有人會使用「Type」作爲字段,在嘗試定義它時沒有警告/錯誤。

 
     public Point_Extended(Point p, booking b) 
     { 
      this.ID = p.ID; 
      this.Type = p.Type; 
      this.Status = p.Status; 
      this.Size = p.Size; 
      this.Coords = p.Coords; 
      this.Color = p.Color; 
      this.BuildingID = p.BuildingID; 

      this.Login = b.Login; 
      this.Starts = b.Starts; 
      this.Hours = b.Hours; 
      this.BookingID = b.ID; 
     } 
+4

爲什麼不自己提供自己的代碼示例,以便我們可以驗證它,以及您正在使用哪個版本的C#?我懷疑你的故事有什麼價值,但除非你發佈了所有發現,包括源代碼,否則我無法做任何事情。 – 2010-08-13 06:45:01

+2

你還打算嘗試定義一個String類嗎? – Oded 2010-08-13 06:46:43

+0

「這應該向Microsoft報告,因此將來沒有人會使用」Type「作爲字段,在嘗試定義它時沒有警告/錯誤。」 Will 2010-08-13 11:22:58

回答

0

沒關係。

這是ToString()覆蓋表示,讓我覺得Type被改變了。

4

如果有一個名字abiguity - 只需使用this.Type/obj.Type(實例),TypeName.Type(靜態)或System.Type(類型)。或者在非常惡劣的情況下,global::System.Type。這工作得很好,並匹配問題(我認爲):

static class Program 
{ 
    static void Main() { 
     Test anyObject = new Test(); 
     anyObject.Type = "abc"; 
    } 
} 
class Test 
{ 
    public string Type; 
} 
+0

Hello Marc感謝您的回覆。 我用我的構造函數更新了第一篇文章。 我已經使用this.Type和p.Type是一個字符串「rect」.. 使用您的示例不會將Test類的實際類型更改爲「abc」,那麼爲什麼它不能在我的上課? 非常感謝! – dezza 2010-08-13 08:02:02

+0

@dezza - 除非你展示整個班級,否則我無法再現這一點。例如,什麼是「Point」? * *有* .Type嗎?你能發佈一個**可重現的例子嗎? – 2010-08-13 10:07:44

+0

對不起..我以爲你只需要關於.Type設置的信息..不需要持有隱藏的卡.. http://pastebin.com/Z07pv9rV – dezza 2010-08-13 10:20:58

0

您正在定義「類型」在您的類的本地範圍,例如,

class SomeClass 
{ 
    public string Type { get; set; } 
} 

然後在該類的某些方法中使用它,例如,

class SomeClass 
{ 
    public string Type { get; set; } 

    public void DoSomeStuff() 
    { 
     Type = "Foo"; 
    } 
} 

這在SomeClass(屬性)中的「Type」和命名空間System(類型)中的「Type」之間是不明確的。

+0

使用this.Type時它是否也應該是模糊的?使用Marc的示例它可以正常工作,但是在使用我自己的示例時,它仍會更改類型。 – dezza 2010-08-13 08:11:12

相關問題