相关疑难解决方法(0)

667
推荐指数
10
解决办法
65万
查看次数

泛型类的静态成员是否与特定实例绑定?

这更像是一个文档,而不是一个真实的问题.这似乎还没有在SO上得到解决(除非我错过了),所以这里有:

想象一下包含静态成员的泛型类:

class Foo<T> {
    public static int member;
}
Run Code Online (Sandbox Code Playgroud)

是否有每个特定类的成员的新实例,或者所有Foo类类只有一个实例?

可以通过以下代码轻松验证:

Foo<int>.member = 1;
Foo<string>.member = 2;
Console.WriteLine (Foo<int>.member);
Run Code Online (Sandbox Code Playgroud)

结果是什么,这种行为记录在哪里?

.net c# generics static

76
推荐指数
2
解决办法
2万
查看次数

改变数组大小

声明后是否可以更改数组大小?如果没有,是否有任何替代阵列?
我不想创建一个大小为1000的数组,但是当我创建它时我不知道数组的大小.

c# arrays size

55
推荐指数
8
解决办法
16万
查看次数

大小未知的字符串数组

如何在一个字符串数组中,你不知道c#.NET中数组大小的位置?

String[] array = new String[]; // this does not work
Run Code Online (Sandbox Code Playgroud)

c# arrays

41
推荐指数
5
解决办法
14万
查看次数

如何以及何时放弃在C#中使用数组?

我总是被告知在数组中添加元素的方式如下:

创建数组+ 1element的空副本,然后将原始数组中的数据复制到其中,然后加载新元素的新数据

如果这是真的,那么由于内存和CPU利用率的原因,在需要大量元素活动的场景中使用数组是正确的,对吗?

如果是这种情况,你是否应该尽量避免在添加大量元素时尽可能多地使用数组?你应该使用iStringMap吗?如果是这样,如果您需要两个以上的维度并且需要添加大量元素添加,会发生什么.你刚刚受到性能打击还是应该使用其他东西?

.net c# theory arrays

25
推荐指数
3
解决办法
2万
查看次数

.NET中的空数组是否使用任何空间?

我有一些代码,我正在返回一个对象数组.

这是一个简化的例子:

string[] GetTheStuff() {
    List<string> s = null;
    if( somePredicate() ) {
        s = new List<string>(); // imagine we load some data or something
    }
    return (s == null) ? 
        new string[0] :
        s.ToArray();
}
Run Code Online (Sandbox Code Playgroud)

问题是,这有多贵new string[0]
我应该只返回null并使调用者接受null作为指示"未找到任何内容"的有效方式吗?

注意:这是在一个循环中调用的,它会运行数百次,所以这是我认为这种优化实际上并不"过早"的少数情况之一.

PS:即使它还为时过早,我仍然想知道它是如何工作的:-)

更新:

最初当我问它是否使用了任何空间时,我从'C/C++'的角度思考问题,有点像在C中,写入char a[5];将在堆栈上分配5个字节的空间,char b[0];并将分配0个字节.

我意识到这不适合.NET世界,但我很好奇,如果这是编译器或CLR将检测和优化的东西,因为一个大小为零的不可调整大小的数组真的不应该(至于我可以看到?)需要任何存储空间.

.net c# arrays

24
推荐指数
3
解决办法
2万
查看次数

新对象[] {}与Array.Empty &lt;object&gt;()

当我输入以下代码时:

object[] objects = new object[] { };
Run Code Online (Sandbox Code Playgroud)

Visual Studio告诉我:

避免不必要的零长度分配。请改用Array.Empty()。

使用一个在另一个之上有任何实际含义吗?

警告的原因是什么?

c# arrays

6
推荐指数
2
解决办法
702
查看次数

通过 C# 在 Windows 注册表中创建一个 REG_NONE 空值

如何在具有类型的 Windows 注册表中创建一个空值REG_NONE

例如,对于这个键:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\
  .htm\OpenWithProgids
Run Code Online (Sandbox Code Playgroud)

以下是我在 Windows 7 机器上看到的值:

----------------------------------------------------
Name           Type       Data
----------------------------------------------------
(Default)      REG_SZ     (value not set)
FirefoxHTML    REG_NONE   (zero-length binary value)
htmlfile       REG_NONE   (zero-length binary value)
----------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

具体来说,我如何声明和初始化“零长度二进制值”类型的变量以将其传递给RegistryKey.SetValue?请注意,我在RegistryValueKind枚举的文档中找不到所需的帮助。

.net c# registry registrykey nonetype

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

没有固定大小的数组

前段时间开始学习C#,一直听说如果没有数组的大小,就应该一直选择list,因为没有大小就不能初始化数组。

话虽如此,我试图实例化一个没有大小值的新数组,它只是有效。

string Input = "1-2-3";
string[] Lista = new string[] { };
Lista = Input.Split('-'); 
for(int i = 0; i < Lista.Length; i++)
{
    Console.WriteLine(Lista[i]);
}
Run Code Online (Sandbox Code Playgroud)

输出:1 2 3。

我真的必须选择列表而不是数组,还是一个过时的概念?

c# arrays list

0
推荐指数
1
解决办法
133
查看次数