有沒有人在C#方法中有this
賦值的有用示例?在面試過程中我曾被要求過一次,而我仍然有興趣回答自己。什麼是C#中的「this」賦值的例子?
回答
其他的答案是不正確的,當他們說你不能分配給「這」。的確,你不能爲類類型,但你可以的結構類型:
public struct MyValueType
{
public int Id;
public void Swap(ref MyValueType other)
{
MyValueType temp = this;
this = other;
other = temp;
}
}
在任何時候,一個struct可以通過分配給「這」像這樣改變自己。
從語法的角度來看,這只是正確的地方,是指定方法的第一個參數爲foo(ftype this,...)時C#3.0中的擴展方法。然後可以將此擴展用於ftype的任何實例。但是,這只是語法,並不是真正的這個ovveride操作。
不正確。值類型可以分配給`this`,並且沒有其他語法。 – jnm2 2016-01-08 18:03:48
使用此關鍵字可確保只訪問當前類型的變量和方法。這可以在字段/屬性與局部變量或方法參數之間存在命名衝突時使用。
在構造通常用於:
private readonly IProvider provider;
public MyClass(IProvider provider)
{
this.provider = provider;
}
在這個例子中,我們指定參數提供給私人領域的供應商。
不是分配給`this`的例子。 – jnm2 2016-01-08 18:01:55
如果您被要求指定這個,有不少例子。想到一個控制他的爸爸是誰:
class frmMain
{
void InitializeComponents()
{
btnOK = new Button();
btnOK.Parent = this;
}
}
不是分配給`this`的例子。 – jnm2 2016-01-08 18:01:42
「this」是對當前類實例的引用。如果你有一個非靜態方法的類,你可以參考使用這個當前類的實例:
public class MyClass{
public string SomeProperty {get;set;}
public void GetSomeProperty(){
return this.SomeProperty;
}
}
不是分配給`this`的例子。 – jnm2 2016-01-08 18:01:10
我知道這個問題早已得到回答,討論已經停止,但這裏有一個案例我沒有在互聯網上的任何地方看到,並認爲在這裏分享可能很有用。
我用它來保持成員的不變性,同時還支持序列化。考慮這樣定義的struct
:
public struct SampleStruct : IXmlSerializable
{
private readonly int _data;
public int Data { get { return _data; } }
public SampleStruct(int data)
{
_data = data;
}
#region IXmlSerializableMembers
public XmlSchema GetSchema() { return null; }
public void ReadXml(XmlReader reader)
{
this = new SampleStruct(int.Parse(reader.ReadString()));
}
public void WriteXml(XmlWriter writer
{
writer.WriteString(data.ToString());
}
#endregion
}
由於我們允許覆蓋this
,我們可以保持_data
的單個實例中舉行的不變性。這有額外的好處,當反序列化新的值時,你保證一個新的實例,這有時是一個很好的保證! }
- 1. 'this'的價值是什麼?
- 2. 'this'的價值是什麼?
- 3. 這個例子中的「this」的上下文是什麼?
- 4. 爲什麼在這個例子中溝渠'this'是有益的
- 5. C++/CX中的[this]是什麼? (Windows 8)
- 6. C#中的「this」是什麼意思?
- 7. C#中'this'的含義是什麼?
- 8. 爲什麼使用$ .data而不是將屬性賦值給「this」?
- 9. 什麼是C++ forwarditerator的例子?
- 10. 用於C#語言的'this'是什麼?
- 11. C++類改變什麼「* this」指的是
- 12. 什麼是Eval(「this」)的等效值
- 13. 什麼是PHP中的MVC的例子?
- 14. 爲什麼重載C++中的單例類的複製賦值操作符?
- 15. Android中的setOnClickListenner中的「this」是什麼
- 16. 賦值=和減法賦值 - = C中的原子操作?
- 17. C#中的複合賦值^ =原子嗎?
- 18. C++中的指針賦值原子嗎?
- 19. 「$ this」的用途是什麼?
- 20. `this`指的是什麼?
- 21. 是什麼在C#初始化和賦值的區別
- 22. 賦值操作符在C++中返回* this的引用
- 23. IE的attachEvent中的'this'是什麼
- 24. 這個例子中的fn是什麼?
- 25. 在C++中使用auto的最簡單的例子是什麼?
- 26. 什麼是PHP中的值對象的例子?
- 27. 「this」是指什麼
- 28. 「this」是指什麼?
- 29. C++中「this」的可能值是多少?
- 30. 在java中布爾值賦值的有效方法是什麼?
每天學習新的東西... – 2008-09-16 07:42:27
哦,這是因爲作爲一個結構它是一個值類型,賦值運算符=值類型複製值。 – 2008-09-16 07:44:13