获取Property是在建造时还是仅在调用该财产时?

时间:2009-12-10 21:28:14

标签: asp.net sql

我有一段代码,我想将其设置为属性的get {}部分。但是,在本节中,我调用了一个SQL查询。

我想知道在构造对象时是否进行调用(即Object t = new Object())或仅在调用属性时(即string query = Object.SqlQuery)。

4 个答案:

答案 0 :(得分:2)

代码仅在调用属性时运行。您可以轻松自行验证:

class MyClass
{
    public string SqlQuery
    {
        get
        {
            Console.WriteLine("Code was run here!");
            return "foo";
        }
    }    
}

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Constructing object.");
        MyClass myObject = new MyClass();
        Console.WriteLine("Getting property.");
        string sqlQuery = myObject.SqlQuery;
        Console.WriteLine("Got property: " + sqlQuery);
    }
}

输出:

Constructing object.
Getting property.
Code was run here!
Got property: foo

答案 1 :(得分:0)

只有在调用属性的getter时,才会调用属性的get部分中的代码。 创建新对象时不会调用它。

这个例外是你从类的构造函数中调用属性的getter。

答案 2 :(得分:0)

只有在访问属性时才会执行sql语句,这称为lazy loading。如果你想要证明,可以使用像sql profiler这样的东西。

答案 3 :(得分:0)

当您从中读取属性的getter时,会调用该属性的getter:

var yourVar = this.yourProperty;

分配属性时会调用setter,如下所示:

this.yourProperty = yourVar;

这有帮助吗?