簡體   English   中英

將實體上下文傳遞給其他方法和對象

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM