小编Tom*_*lan的帖子

方法解析顺序

假设我们有:

public class FooBase
{
    public void Write(byte value)
    {
        //something
    }

    public void Write(int value)
    {
        //something
    }
}

public class Foo : FooBase
{
    public void Write(decimal value)
    {
        //something
    }
}
Run Code Online (Sandbox Code Playgroud)

比这个:

        var writer = new Foo();

        writer.Write(5);         //calls Write(decimal) !!
        writer.Write((byte)6);   //calls Write(decimal) !!
Run Code Online (Sandbox Code Playgroud)

将调用Write(十进制)重载.为什么?我怎样才能调用Write(int)或Write(byte)?

c# overloading

10
推荐指数
3
解决办法
959
查看次数

获取机器SID(包括主域控制器)

我需要在C#中获取机器SID(不是计算机帐户的SID).计算机被指定为主机名,它不一定是本地计算机,它可以是域计算机或工作组计算机.我使用这个帮助器类来调用LookupAccountName API函数:

    private static class Helper
    {
        internal enum SID_NAME_USE
        {
            SidTypeUser = 1,
            SidTypeGroup,
            SidTypeDomain,
            SidTypeAlias,
            SidTypeWellKnownGroup,
            SidTypeDeletedAccount,
            SidTypeInvalid,
            SidTypeUnknown,
            SidTypeComputer
        }

        [DllImport("advapi32.dll", CharSet = CharSet.Auto, SetLastError = true)]
        private static extern bool LookupAccountName(
            string systemName,
            string accountName,
            byte[] sid,
            ref int sidLen,
            System.Text.StringBuilder domainName,
            ref int domainNameLen,
            out SID_NAME_USE peUse);

        public static SecurityIdentifier LookupAccountName(
            string systemName,
            string accountName,
            out string strDomainName,
            out SID_NAME_USE accountType)
        {
            const int ERROR_INSUFFICIENT_BUFFER = 122;

            int lSidSize = 0;
            int lDomainNameSize = 0; …
Run Code Online (Sandbox Code Playgroud)

c# windows sid

6
推荐指数
1
解决办法
5367
查看次数

标签 统计

c# ×2

overloading ×1

sid ×1

windows ×1