我有一个返回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) 我知道如何从根本上不同的Marshal.SizeOf()和sizeof()是。但是在 的情况下,无论 CPU 架构如何,IntPtr它们不会总是返回完全相同的东西吗?
只是想了解这是否有意义以及其中的意义在哪里。
Marshal.AllocHGlobal(int cb)在非托管内存中分配指定数量的字节。
但为什么Marshal.AllocHGlobal(0)实际上会返回一个IntPtrnot呢 IntPtr.Zero?当我使用完 0 字节后,我是否应该释放分配的 0 字节?
我看不到这个实现背后的逻辑,有人可以解释一下吗?
我有一些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) 我有以下课程
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) 假设我有一个类似的函数:
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'这可能吗?