[英]Passing Entity Context to other methods and objects
我想知道在類之間傳遞上下文的最佳方法是什么。 我應該使用ref參數還是簡單地將上下文作為參數傳遞? 最好是構造函數,但在靜態方法的情況下,最好的方法是什么? 即性能,安全性,設計等。將上下文作為參數傳遞是否會影響性能? 如果不同的線程在使用引用的同時處理上下文,可能會發生沖突嗎?
Main.cs
static void Main(string[] args)
{
var context = new MyEntities();
var myClass = new MyClass(context);
myClass.AddPerson();
// or
Person.AddPerson(ref context);
}
MyClass.cs
public class MyClass
{
public void MyClass(MyEntities context) { }
public void AddPerson()
{
context.People.AddObject(new Person());
}
}
MySecondClass.cs
public partial class Person
{
public static AddPerson(ref MyEntities context)
{
// Do something
}
}
ref關鍵字表示您通過引用傳遞指針,因此更改變量的值將為調用者更改它。 又名:
static void Main(string[] args)
{
var context = new MyEntities();
Person.AddPerson(ref context);
// context is now null
}
電話:
public partial class Person
{
public static AddPerson(ref MyEntities context)
{
context = null;
}
}
在這種情況下,你不會通過引用傳遞。 請記住,變量是指向對象的指針,因此簡單地傳遞它不會像在C ++中那樣復制對象。
在這里使用ref
是完全沒必要的。 在傳遞對象時,您實際上傳遞了引用的副本(它本身是指向堆中對象的值類型)。 使用ref
關鍵字,您通過引用傳遞“參考值”(混淆了嗎?)。 這意味着實際上可以在函數范圍之外更改引用,這在任何情況下都不實用,並且只是奇怪錯誤的機會。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.