当对象的新实例调用时会发生什么?

时间:2016-03-31 06:04:56

标签: c# constructor

关于班级的构造者,我脑子里有一个混乱。我怎么试图找到这个,但没有找到任何与我的困惑相关的答案..

假设我有一个班级

public class mySampleClass
{
    public mySampleClass()
    {
        // This is the constructor method.
    }
    // rest of the class members goes here.
}

它有很多属性,当我初始化这个类时会发生什么?我的意思是说是否只调用构造函数?或者是其他东西?

其他属性呢?我问这个愚蠢的问题,因为我的WCF服务,包含许多方法,在我初始化同一个类的每个方法中,如果我使对象全局崩溃某些地方。

我的另一个问题是初始化构造函数的新实例需要多少时间?取决于所有代码?或者是否构造函数体?

请详细说明一些例子。有两个构造函数或许多。

更新:

关于这个问题存在一些困惑,我只是简单地共享一个场景,比如WCF服务,但是我必须知道构造函数初始化时间,是否依赖于构造函数?或者遍布对象(包含其他方法属性)。

简单来说

  

我想知道它在initilize时的构造函数是否依赖于Properties,Method等?

1 个答案:

答案 0 :(得分:0)

构造函数只执行一次,当你在其他类或方法中甚至在服务中实例化你的类时它。

离。

package main

import (
    "fmt"
    "syscall"
    "unsafe"
)

const (
    PROCESS_QUERY_INFORMATION = 1 << 10
    PROCESS_VM_READ           = 1 << 4
)

//defind a struct
type PROCESS_MEMORY_COUNTERS struct {
    cb                         uint32
    PageFaultCount             uint32
    PeakWorkingSetSize         uint64
    WorkingSetSize             uint64
    QuotaPeakPagedPoolUsage    uint64
    QuotaPagedPoolUsage        uint64
    QuotaPeakNonPagedPoolUsage uint64
    QuotaNonPagedPoolUsage     uint64
    PagefileUsage              uint64
    PeakPagefileUsage          uint64
}

func main() {
    //get Process Handle
    current, err := syscall.OpenProcess(PROCESS_QUERY_INFORMATION|PROCESS_VM_READ, false, 728)
    if err != nil {
        return
    }
    //call psapi.ll
    psapi := syscall.NewLazyDLL("psapi.dll")
    var process PROCESS_MEMORY_COUNTERS
    process.cb = uint32(unsafe.Sizeof((process)))
    GetProcessMemoryInfo := psapi.NewProc("GetProcessMemoryInfo")
    _, _, err = GetProcessMemoryInfo.Call(uintptr(current), uintptr(unsafe.Pointer(&process)), unsafe.Sizeof(&process))
    if err != nil {
        fmt.Println(err)
    } else {
        fmt.Println(process)
    }
}

班级内的属性和方法不会受到影响&#34;除非&#34;你会做mySampleClass msc = new mySampleClass(); msc.PropertyName="somethingelse";