小编cog*_*el0的帖子

列出<string>到object []

我有一个返回a的方法,List<string>我试图将其传递给a的AddRange(Object[])方法ComboBox.

我怎样才能将我转换List<string>Object[]

我想我可以做一个,foreach但我宁愿使用AddRange(Object[])它,因为它更快(并产生更少的代码).

编辑

以下工作正常:

var list = new List<string>();
object[] array = list.ToArray<object>();
comboBox.AddRange(array);
Run Code Online (Sandbox Code Playgroud)

但是,另一方面,我想要执行上述操作而不是:

var list = new list<string>();
comboBox.AddRange(list.ToArray<object>());
Run Code Online (Sandbox Code Playgroud)

c#

4
推荐指数
1
解决办法
4173
查看次数

Marshal.SizeOf(typeof(IntPtr)) vs sizeof(IntPtr)

我知道如何从根本上不同的Marshal.SizeOf()sizeof()是。但是在 的情况下,无论 CPU 架构如何,IntPtr它们不会总是返回完全相同的东西吗?

.net c#

4
推荐指数
1
解决办法
2342
查看次数

Marshal.AllocHGlobal(0) - 为什么不返回 IntPtr.Zero

只是想了解这是否有意义以及其中的意义在哪里。

Marshal.AllocHGlobal(int cb)在非托管内存中分配指定数量的字节。

但为什么Marshal.AllocHGlobal(0)实际上会返回一个IntPtrnot IntPtr.Zero?当我使用完 0 字节后,我是否应该释放分配的 0 字节?

我看不到这个实现背后的逻辑,有人可以解释一下吗?

.net c# marshalling

4
推荐指数
1
解决办法
1317
查看次数

@($ null)和$ null之间的差异

我有一些PowerShell代码,我在调用一个.NET方法,它希望一个类作为参数传递.

该方法接受一个空值作为参数,在C#中你可以调用它如下:

var T = New Foo(null)
Run Code Online (Sandbox Code Playgroud)

如果将其转换为PowerShell,可以尝试:

$T = New-Object Foo($null)
Run Code Online (Sandbox Code Playgroud)

但是返回以下错误

New-Object : Constructor not found. Cannot find an appropriate constructor for type Foo
Run Code Online (Sandbox Code Playgroud)

有足够的Funilly,如果我将其称为以下内容,则返回完全相同的错误:

$T = New-Object Foo
Run Code Online (Sandbox Code Playgroud)

所以第一个问题是为什么?.NET是否认为$null缺少某些东西,null与.NET 的类型相反?这就是为什么上面两条指令返回相同的错误?

现在,我找到了解决此问题的方法如下:

$T = New-Object Foo(@($null))
Run Code Online (Sandbox Code Playgroud)

这很好,但是......为什么?

(@($Null)).GetType() 回报 object[]

(@()).GetType()也回来了object[],但如果我跑:

$T = New-Object Foo(@())
Run Code Online (Sandbox Code Playgroud)

我还是得到:

New-Object : Constructor not found. Cannot find an appropriate constructor for type Foo
Run Code Online (Sandbox Code Playgroud)

那么,第二个问题:@(),@($ null)和$ null之间有什么区别?

此外,还有最后一个问题,这是我不明白的其他问题.

假设我有另一种.NET方法 Bar(string, Foo)

如果我打电话:

$B = New-Object Bar("s", …
Run Code Online (Sandbox Code Playgroud)

.net powershell

3
推荐指数
1
解决办法
271
查看次数

用 LINQ 合并两个 IEnumerable

我有以下课程

public class Application
{
    public int Id { get; set; }

    public int Version { get; set; }

    (...)
}
Run Code Online (Sandbox Code Playgroud)

我有以下几点IEnumerable<Application>

IEnumerable<Application> applications1 = new List<Application>
{
    new Application {Id = 1, Version = 1},
    new Application {Id = 2, Version = 1},
    new Application {Id = 3, Version = 3}
};

IEnumerable<Application> applications2 = new List<Application>
{
    new Application {Id = 1, Version = 2},
    new Application {Id = 3, Version = 2}
    new Application {Id …
Run Code Online (Sandbox Code Playgroud)

.net c# linq

3
推荐指数
1
解决办法
193
查看次数

PowerShell - 我可以使参数集依赖于另一个参数的值吗?

假设我有一个类似的函数:

function Authenticate
{
    param
    (
        [ValidateSet('WindowsAuthentication','UsernameAndPassword')]
        [string]$AuthenticationType,

        [Parameter(ParameterSetName='ParamSet1')]
        [string]$Username,

        [Parameter(ParameterSetName='ParamSet1')]
        [string]$Password
    )
  ..
}
Run Code Online (Sandbox Code Playgroud)

我想执行这些规则:

  • ParamSet1如果出现以下情况,则强制设置参数$AuthenticationType = 'UsernameAndPassword'
  • 完全“禁用”ParamSet1如果$AuthenticationType = 'WindowsAuthentication'

这可能吗?

powershell parameter-sets dynamicparameters

2
推荐指数
1
解决办法
6430
查看次数